利用windows创建模态和非模态子窗口,首先先了解一下模态和非模态的区别:
模态窗口:在点击父窗口某一事件后,弹出一个子窗口,若子窗口存在,就无法对父窗口操作,直至子窗口消失.
非模态:弹出的子窗口和父窗口可同时操作。
1.非模态:
mywidget.h
#ifndef MYWIDGET_H
#define MYWIDGET_H
#include <QWidget>
namespace Ui {
class MyWidget;
}
class MyWidget : public QWidget
{
Q_OBJECT
public:
explicit MyWidget(QWidget *parent = 0);
~MyWidget();
private:
Ui::MyWidget *ui;
public slots:
void showChildDialog();
};
#endif // MYWIDGET_H
mywidget.cpp
#include "mywidget.h"
#include "ui_mywidget.h"
#include <QDialog> //包含头文件
MyWidget::MyWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::MyWidget)
{
ui->setupUi(this);
connect(ui->showChildButton, SIGNAL(clicked()),
this, SLOT(showChildDialog()));
}
MyWidget::~MyWidget()
{
delete ui;
}
void MyWidget::showChildDialog()
{
QDialog *dialog = new QDialog(this);
dialog->show();
}
main.cpp
#include <QApplication>
#include "mywidget.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MyWidget w;
w.show();
return a.exec();
}
2.模态窗口: