[英]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.