我想将exec用法转换为show项目中的方法。因为,当我使用execfor窗口(对话框)时,无法打开另一个窗口。这是exec()和show()方法之间的基本区别。
在exec和show以不同的方式,我想知道我怎么可以使用更改下面的代码工作show(),而不是exec()。
例如:
int result = exampleWindow->exec();
if ( result == QDialogButtonBox::Ok )
{
exampleWindow->UpdateCalibrationData(&data);
exampleWindow->UpdateFilterData(&filterData);
exampleWindow();
}
Run Code Online (Sandbox Code Playgroud)
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)