QTabWidget选项卡中的QStackedWidget?

时间:2010-01-26 09:47:13

标签: qt qtabbar qtabwidget

在我的QT应用程序中,我使用QTabWidget进行基本导航。我在ui中设置了这个QTabWidget。在QTabWidget的一些选项卡中,我需要让QStackedWidget能够“在视图中向下钻取”。

我尝试在ui中添加QStackedWidget,但它会自动将一个页面添加到堆栈中。我想在代码中添加QStackedWidget的页面。如果我在代码中尝试这样做,stackWidget已经有了一个标准页面,所以myWidget将成为堆栈中的第二个。

MyWidget *myWidget = new MyWidget(ui.stackedWidget);
ui.stackedWidget->addWidget(myWidget);

在QTabWidget标签中设置QStackedWidget的最佳和最简单方法是什么?

2 个答案:

答案 0 :(得分:1)

怎么样:

QTabWidget *myTabWidget = new QTabWidget(this);
QStackedWidget *myStackedWidget = new QStackedWidget(myTabWidget);

myTabWidget->addTab(myStackedWidget, "Stacked Widget");

您还可以删除Qt Designer / Creator中的所有现有堆栈页面。只需右键单击堆叠的窗口小部件,然后删除所有现有页面。然后,您可以使用addWidget()在代码中添加所需的页面。

答案 1 :(得分:0)

我会说 - 在ui中创建它,就像你一样(这样更容易布局/定位,稍后在选项卡上添加其他小部件等),但只需删除所有现有页面(由设计师添加)代码并添加新代码。

实际上,Qt 4.6中的Designer允许从堆叠小部件中删除所有页面 - 您需要右键单击,转到子菜单“Y的页面X”,然后选择“删除”。重复,直到所有页面都消失:)

也许这最近才被添加到Designer中,所以如果你有早期版本的Qt,你可能仍然需要从代码中删除它们。

说到将内容保留在ui中以防止它保留在代码中,我会投票“尽可能多地在UI文件中”:)