我认为我有一个相当基本的Qt问题,但我无法弄清楚:
我有一个QMainWindow,它包含一个QStackedWidget。其中的所有页面小部件都是从QWidget派生的单独类。
所以:
QMainWindow在一个类中实现QStacked Window。 堆叠小部件中的所有其他页面都是添加的类,并且所有页面都有自己的.ui,通过Designer填充按钮和列表。
要导航到不同的页面,在主窗口内我可以访问:ui.stackedWidget->setCurrentIndex(2);
似乎我无法在堆叠小部件内的另一个页面上访问ui.stackedWidget?我无法访问ui.stackedWidget,因为Ui是mainwindow类中的私有成员。 (由Qt自动生成 - 使用VS插件添加QT4类)
我想知道,当点击属于此小部件中另一个页面的按钮时,如何跳转到堆叠小部件中的另一个页面?
注意:
所有页面都添加到mainWIndow的构造函数中的StackedWidget中:
ui.stackedWidget->addWidget(page1Widget);
ui.stackedWidget->addWidget(page2Widget);
// etc..
page1Widget中按钮点击信号槽的示例:
connect(ui.btnViewData, SIGNAL(clicked()), this, SLOT(viewData()));
::viewData()
{
// navigate to another page here.
// note: ui.stackedWidget->setCurrentIndex(3); is not accessible here!
}
答案 0 :(得分:3)
我相信在你的QMainWindow对象中放置你的connect()和viewData()函数将解决你的问题,因为主窗口可以访问子窗口小部件和QStackedWidget项目所发出的信号。
您可能需要为每个页面编写一个Ui getter,然后执行类似
的操作connect(page1Widget->getUi().btnViewData, SIGNAL(clicked()), this, SLOT(viewData)));
希望它有所帮助, 欢呼声