如何获得QDialog :: show()的结果?

Emr*_*reS 0 qt exec show

我想将exec用法转换为show项目中的方法。因为,当我使用execfor窗口(对话框)时,无法打开另一个窗口。这是exec()show()方法之间的基本区别。

execshow以不同的方式,我想知道我怎么可以使用更改下面的代码工作show(),而不是exec()

例如:

int result = exampleWindow->exec();

if ( result == QDialogButtonBox::Ok )
{
    exampleWindow->UpdateCalibrationData(&data);
    exampleWindow->UpdateFilterData(&filterData);
    exampleWindow();
}
Run Code Online (Sandbox Code Playgroud)

kef*_*500 5

show() 显示非模式窗口;

exec() 显示一个模式窗口。

如果要获得的结果show(),请使用Qt信号/插槽:

ExampleWindow::ExampleWindow(QWidget *parent) : QDialog(parent)
{
    // Assuming the QDialogButtonBox name is "buttonBox":
    connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept()));
    connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject()));
}
Run Code Online (Sandbox Code Playgroud)

MainWindow.h

class MainWindow : public QMainWindow {
    Q_OBJECT
private slots:
    void updateData();
}
Run Code Online (Sandbox Code Playgroud)

MainWindow.cpp

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
{
    connect(exampleWindow, SIGNAL(accepted()), this, SLOT(updateData()));
}

void MainWindow::updateData()
{
    // Your code:
    exampleWindow->UpdateCalibrationData(&data);
    exampleWindow->UpdateFilterData(&filterData);
    exampleWindow();
}
Run Code Online (Sandbox Code Playgroud)