我想我有一个相当基本的Qt问题,但我不能解决它:
我有一个装有QStackedWidget的QMainWindow。其中的所有页面小部件都是从QWidget派生的独立类。
所以:
QMainWindow在一个类中实现了QStacked窗口。堆叠的小部件中的所有其他页面都添加了类,并且所有页面都有自己的.ui,其中通过设计器填充了按钮和列表。
为了导航到不同的页面,在我可以访问的主窗口中: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!
}发布于 2013-02-25 21:51:21
我相信将connect()和viewData()函数放在QMainWindow对象中可以解决您的问题,因为主窗口可以访问子小部件和QStackedWidget项发出的信号。
您可能需要为每个页面编写一个Ui getter,然后执行以下操作
connect(page1Widget->getUi().btnViewData, SIGNAL(clicked()), this, SLOT(viewData)));希望能有所帮助,干杯
https://stackoverflow.com/questions/15051161
复制相似问题