在Qt中处理多个窗口
Handling multiple windows in Qt
我使用QStackedWidget
来处理Qt应用程序中的多个窗口/窗体根据这个问题
我使用这个模式:
- 将所有小部件对象添加到mainwindow.cpp的
QStackedWidget
中 - 在请求更改窗口时从子窗口获取信号
- 主窗口替换窗口(它更新右边槽中的QStackedWidget)
问题:
这是正确的方法吗?我的应用程序中有很多窗口,我希望确保这是常见的最佳实践。这个模式意味着我有指向主窗口中所有窗口的指针。
我的一段代码:mainwindow.cpp:MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
mnuWin = new Menu();
singlePulseWin = new SinglePulse();
repetitive = new Repetitive();
treatmentType = new TreatmentType();
//... and so on ....
connect(mnuWin,&Menu::updateMainWindowStackWidget,this,&MainWindow::onChangeWindowRequested);
connect(singlePulseWin,&SinglePulse::updateMainWindowStackWidget,this,&MainWindow::onChangeWindowRequested);
connect(repetitive,&Repetitive::updateMainWindowStackWidget,this,&MainWindow::onChangeWindowRequested);
connect(treatmentType,&TreatmentType::updateMainWindowStackWidget,this,&MainWindow::onChangeWindowRequested);
//... and so on ....
ui->pagesWidget->addWidget(mnuWin);
ui->pagesWidget->addWidget(singlePulseWin);
ui->pagesWidget->addWidget(repetitive);
ui->pagesWidget->addWidget(treatmentType);
//... and so on ....
ui->pagesWidget->setCurrentIndex(0);
}
void MainWindow::onChangeWindowRequested(int ind) //slot
{
ui->pagesWidget->setCurrentIndex(ind);
}
menu.cpp:
void Menu::on_btnMenuSinglePulse_clicked()
{
emit updateMainWindowStackWidget(1);
}
void Menu::on_btnMenuRepetitive_clicked()
{
emit updateMainWindowStackWidget(2);
}
void Menu::on_btnMenuBurst_clicked()
{
emit updateMainWindowStackWidget(3);
}
QStackedWidget是处理多窗口的好方法。为什么不把按钮放在主窗口,这样你就可以更方便地改变pagesWidget的currentWidget,而不是创建信号槽
相关文章:
- 处理闪烁窗口事件
- 处理身份验证弹出窗口在wxWebView
- 如何在 c++ 窗口中将参数和返回的退出值传递到批处理文件/从批处理文件获取返回的退出值
- Wxwidgets - 如何添加调整大小事件处理程序以使"X"绘图随窗口调整大小?
- 窗口上信号处理程序的异步安全写入函数
- C++ winAPI 无法处理子窗口事件
- 如何处理窗口的消息?
- 如何处理来自多个窗口的消息
- 获取特定监视器的处理程序以在其中放置弹出窗口
- 如果窗口服务被杀,如何处理事件
- 窗口后台处理程序究竟如何确定它将发送到打印处理器的数据类型?
- 窗口如何处理加载两个不同版本的 DLL
- 如何让 wndproc 处理发送到多个窗口的消息
- 如何处理 WXWIDGETS 中父窗口的鼠标事件
- 如何创建跨平台窗口处理程序
- OpenGL代码工作,不管我使用什么输入/窗口处理程序
- 在窗口处理mfc时执行程序
- 告诉窗口处理除一条消息外的所有消息
- 获取无模式对话框窗口处理程序
- 窗口处理中的异常