我对这个问题的研究表明,我有点孤注一掷,但我似乎无法得到结论性的答案。
我正在使用QT Creator创建一个GUI,它将帮助与单元寄存器(简单的对象,带有一些ID等)进行接口。
我有一个主菜单,里面有5个按钮和一张桌子。图为此处。我的项目目前包括这些文件,我的主要文件目前看起来是这样的:
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
UnitRegister e;
CommInterface c;
w.setRegistryPtr(e);
w.setCommPtr(c);
w.setTablePtr(w.findChild<QTableWidget*>("unitTable"));
w.show();
return a.exec();
}
我想做的是按下左边四个按钮中的一个,然后用它在主窗口中切换到不同的视图。
为此,我考虑使用QStackedWidget,然后为每个菜单按钮提供一个页面。我的问题是:
- 我应该如何创建一个单独的QT项目窗体类(header,.cpp和.ui文件)
- 如何在使用QT Designer添加的页面之间切换
- 如何确保不同的页面可以访问在我的主文件中创建的UnitRegister
我不一定要寻找一个完整的答案,而是要找到一些能让我继续前进的东西。
切换页面:考虑一个QButtonGroup
来为按钮提供ID,您可以将其映射到QStackedWidget
的索引。然后你可以这样做:
connect(buttonGroup, SIGNAL(buttonClicked(int)), stackedWidget, SLOT(setCurrentIndex(int)));
组织页面:为小部件堆栈中的每个页面创建一个.ui文件和相应的容器小部件。这比一个巨大的.ui文件要容易得多。
访问UnitRegister
:有很多方法可以做到这一点。向类中添加setter函数是一种方法。