是否可以使用指针更改布局的内容?
我想做如下的事情。
在标题中:
QWidget* activeView;
QWidget* one;
QWidget* two;
...
在源文件中,我在构造函数中设置了小部件,并将第一个推送到布局:
activeView = one;
ui->activeLayout->addWidget(activeView);
后来我想通过插槽或方法更改 activeView
:
activeView = two;
我试过了,但是不行。我什至调用了布局的 update()
方法。
最佳答案
不幸的是,这不会起作用。
你想要的是QStackedWidget
。官方文档是here .
如果您不想使用此小部件并想手动使用,您将不得不在代码中自行重构布局。可以用方法包裹起来,不会太难看。
示例:
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);
}
关于c++ - Qt中用指针改变布局内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37105811/