1.重新添加一个类myDialog,ui作为新的对话框
右键项目——添加——Add Qt Class——Qt Widget Class
2.添加的类是继承于QWidget,修改myDialog.h和myDialog.cpp。
myDialog.h
#include "ui_myDialog.h"
#include<QDialog>
class myDialog : public QDialog//此处由QWidget修改为QDialog
{
Q_OBJECT
public:
myDialog(QWidget *parent = Q_NULLPTR);
~myDialog();
private:
Ui::myDialog ui;
};
myDialog.cpp
myDialog::myDialog(QWidget *parent)
: QDialog(parent)此处由QWidget修改为QDialog
{
ui.setupUi(this);
}
显示对话框的槽函数如下:
void study_mainWin::on_pushButton_clicked() {
myDialog *dialog = new myDialog();
dialog->exec(); //如果是myDialod继承于QDialog,则使用该方法显示模态窗口
//dialog->show(); //如果是myDialod继承于QDialog,则使用该方法设置非模态窗口
}
如果不进行第二步的修改(由QWidget修改为QDialog),则myDialog是继承于QWidget,在QWidget类中显示模态窗口与QDialog类中显示模态窗口方法不同。
如果myDialog继承与QWidget,则显示对话框的槽函数如下:
void study_mainWin::on_pushButton_clicked() {
myDialog *dialog = new myDialog();
dialog->setWindowModality(Qt::ApplicationModal); //如果是myDialod继承于QWidget,则使用该方法设置对话框为模态窗口
dialog->show(); //setWindowModality()的参数设置要阻塞的窗口类型
//Qt::NonModal 不阻塞
//Qt::WindowModal 阻塞父窗口,所有祖先窗口及其子窗口
//Qt::ApplicationModal 阻塞整个应用程序
}