【发布时间】:2023-02-07 04:11:02
【问题描述】:
我有两个不同的视图显示在 QWidget 窗口中。每个视图都有一个单独的 QGraphicsScene。 我想在单击按钮时在两个视图之间切换。
这是我当前的实现:
void toggleUi(bool type){
QGraphicsView* currentView;
if(bool){
currentView = getFirstView(); // returns QGraphicsView of first type
}
else{
currentView = getSecondView(); // returns QGraphicsView of second type
}
QLayout* layout = widget->layout ();
if (layout != 0)
{
QLayoutItem *item;
while ((item = layout->takeAt(0)) != 0)
layout->removeItem (item);
delete layout;
}
QVBoxLayout *layout = new QVBoxLayout(this);
layout->addWidget(currentView);
}
问题:即使在删除布局并添加新布局后,两个视图在切换时也会相互重叠显示。 两个视图在没有切换的情况下都呈现良好。 有更好/另一种方法吗?
【问题讨论】:
-
不要乱用布局。此外,从布局中删除小部件并不会隐藏它,它只会使该小部件不再受布局管理.使用 QStackedWidget。
-
明白你的意思了。有没有一种方法可以在没有 QStackedWidget 的情况下仅使用 QWidget 来切换视图?
-
你为什么不想使用 QStackedWidget?
-
@Tim 通过查看您发布的 sn-p 清楚了,QStackedWidget 是更好的方法。