根据下拉列表中选择的项目注入小部件

时间:2016-01-20 06:05:15

标签: qt qt-creator

我想知道如何使用我根据所选的opencv过滤器预先定义的小部件填充空白区域。我看了qhide和qshow,但是当我在同一个窗口中有12个不同的过滤器时,杂乱就成了问题。

有什么建议吗?

http://i.imgur.com/OAHcLz6.png

2 个答案:

答案 0 :(得分:1)

我认为最好的方法是使用QStackedWidget类。您可以在其上创建具有不同小部件的多个页面并添加到堆栈。

stack->addWidget(widget);

然后当您在组合框中选择一些值时,您可以在堆栈小部件中显示适当的页面。

stack->setCurrentIndex(index);

答案 1 :(得分:0)

您可以在主窗口的合适位置添加布局,并根据需要添加或删除小部件。

如果您希望它们始终在后台同步,则可以在构造函数中创建所有窗口小部件实例。如果不需要,您可以在需要时创建实例,并在不需要时删除它们。

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    widget1 = new MyWidget1;
    widget2 = new MyWidget2;
    widget3 = new MyWidget3;

    // myWidgetlayout could be a QHBoxLayout or a QVBoxLayout
    ui->myWidgetlayout->addWidget(widget1);

    .... //Continue with rest of the things
}

每当您想要更改窗口小部件时,您都可以执行以下操作:

ui->myWidgetlayout->removeWidget(widget1);
ui->myWidgetlayout->addWidget(widget2);