【发布时间】:2021-02-03 12:07:16
【问题描述】:
我想从对话框中打开我的应用程序的主窗口。实际上我想先启动一个小对话框窗口,然后在对话框上按确定按钮后,主窗口应该打开。我现在的方法如下所示,但它不起作用。
在主窗口加载以下行
Dialog diag;
diag.setModal(true);
diag.exec()
在对话框的 OK 按钮的单击事件中,我输入了以下几行:
Mainwindow mainw;
mainw.show()
请建议如何正确执行此操作,以便通过单击首先出现的对话框上的确定按钮打开主窗口。
完整代码如下 以下是@Farshid616 建议的我的完整代码
主窗口.ccp
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
Dialog *dialog=new Dialog();
ui->setupUi(this);
QObject::connect(dialog,&Dialog::accepted,this,&MainWindow::onAccept);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::onAccept()
{
this->show();
}
mainwindow.h
private slots:
void onAccept();
dialog.h
signals:
void accepted();
dialog.cpp
#include "dialog.h"
#include "ui_dialog.h"
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
}
Dialog::~Dialog()
{
delete ui;
}
void Dialog::on_buttonBox_accepted()
{
emit accepted();
this->accept();
}
mainwindow.ui 没有小部件,而 dialog.ui 有带有确定和取消按钮的 buttonBox。
【问题讨论】: