繁体   English   中英

使用Qt中的指针更改布局内容

[英]Change layout content with pointers in Qt

是否可以使用指针更改布局的内容?

我想做类似以下的事情。

在标题中:

QWidget* activeView;
QWidget* one;
QWidget* two;
...

在源文件中,我在构造函数中设置了Widget,然后将第一个推送到布局:

activeView = one;
ui->activeLayout->addWidget(activeView);

后来有了插槽或方法,我想更改activeView

activeView = two;

我试过了,但是行不通。 我什至调用了布局的update()方法。

不幸的是,这将无法正常工作。

您想要的是QStackedWidget 官方文档在这里

如果您不想使用此小部件并希望手动进行操作,则必须自己在代码中重建布局。 它可以包装在一个方法中,不会太难看。

例:

void clearLayout(QLayout *layout) 
{
    if (layout) {
        while(layout->count() > 0){
            QLayoutItem *item = layout->takeAt(0);
            delete item->widget();
            delete item;
        }
    }
}

void setNewWidgetVisible(QWidget *activeView)
{
   clearLayout(ui->activeLayout);
   ui->activeLayout->addWidget(activeView);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM