Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
QT的可扩展输入列表_Qt_List_User Interface_Show Hide - Fatal编程技术网

QT的可扩展输入列表

QT的可扩展输入列表,qt,list,user-interface,show-hide,Qt,List,User Interface,Show Hide,我正在尝试制作一个GUI,这样当您增加“文章”计数时,就会显示更多的文章输入。例如,如果我将文章数更改为2,我希望第2条显示另一组输入,如果文章数更改为3,则将有三组输入,但由于这将占用比窗口更多的空间,因此它将开始滚动 我曾考虑使用一个树、列表或表小部件,但我不确定这是否是我应该使用的正确方向。有人能把我推向正确的方向吗 这是一张照片,因为我的描述不好 您应该将一篇文章所需的所有小部件放在一个自定义小部件中。每当旋转框被更改(插槽中的代码)时,您可以在滚动区域中添加/删除此类自定义小部件的一个

我正在尝试制作一个GUI,这样当您增加“文章”计数时,就会显示更多的文章输入。例如,如果我将文章数更改为2,我希望第2条显示另一组输入,如果文章数更改为3,则将有三组输入,但由于这将占用比窗口更多的空间,因此它将开始滚动

我曾考虑使用一个树、列表或表小部件,但我不确定这是否是我应该使用的正确方向。有人能把我推向正确的方向吗

这是一张照片,因为我的描述不好


您应该将一篇文章所需的所有小部件放在一个自定义小部件中。每当旋转框被更改(插槽中的代码)时,您可以在滚动区域中添加/删除此类自定义小部件的一个实例

在这个自定义小部件类(我们称之为
ArticleWidget
)的构造函数中,您应该在自定义小部件中定义信号,通知其子小部件中所做的更改。在自定义小部件中连接这些:

ArticleWidget::ArticleWidget(QWidget *parent) :
        QWidget(parent)
{
    ui->setupUi(this); // when you use QtDesigner to design the widget

    // propagate signals from my inner widgets to myself:
    connect(ui->title, SIGNAL(textChanged(QString)),
            SIGNAL(titleChanged(QString)));
}
在外部小部件中,每当创建这样一个自定义小部件时,将其信号连接到处理插槽:

void OuterWidget::articleCountChanged(int)
{
    ...
    if(/*increased*/)
    {
        ArticleWidget *article = new ArticleWidget(this);
        connect(article, SIGNAL(titleChanged(QString)),
                SLOT(art_titleChanged(QString)));
        ui->scrollAreaViewport->layout()->addWidget(article);
    }
    ...
}
您可以使用
sender()
访问文章小部件:

在外部小部件类中有一个向量:

QVector<ArticleData*> articles;
QVector文章;

看一看注释:这是图库,不是gallary。
struct ArticleData
{
    ArticleWidget *widget;
    QString title;
    ...
};
QVector<ArticleData*> articles;