【转】QT创建子对话框的方法
原文地址:http://blog.csdn.net/baidu_18991997/article/details/42713159
代码实现功能:单击某个按钮后,弹出对话框,对话框中的内容可自行设计。
1.建立一个主界面,主界面中有一个pushbotton按键。
2.右键项目->添加新文件->Qt设计师界面类
Part II——对话框的模态和非模态
1、 建立一个对话框类:
2、 对话框中放置pushbutton和TextEdit:
3、 转到主窗口菜单栏New Window的槽:
4、 在槽中插入如下代码(并且在mainwindow.h中要建立对话框的指针):
5、显示结果如下:
(1)非模态显示(dialog->setModal(false)):
(2)模态显示(dialog->setModal(ture)):
给出完整程序(只给出需要填写代码和有注释部分,无改动的不给出):
mainwindow.h程序:
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include"mydialog.h" namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); private slots: void on_actionNew_Window_triggered(); private: Ui::MainWindow *ui; MyDialog *dialog; //添加私有成员,为一个dailog(窗口)的指针 }; #endif // MAINWINDOW_H
mainwindow.cpp程序:
#include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); //把给定的组件设定成主窗口的中央组件,这里是把plainTextEdit设为窗口的中央组件 setCentralWidget(ui->plainTextEdit); } MainWindow::~MainWindow() { delete ui; } void MainWindow::on_actionNew_Window_triggered() { //新建一个窗口对象,其中的this指定了新的窗口的父对象是MainWindow,在销毁Mainwindow时也会销毁子对象,即该窗口对象 dialog = new MyDialog(this); //Modal属性决定了show()应该将弹出的dialog设置为模态还是非模态 //默认情况下该属性为false并且show()弹出的窗口是非模态的 //把这个属性设置为true就详单与设置QWidget::windowModality为Qt::ApplicationModal //执行exec()忽略这个Modal这个属性,并且把弹出的dialog设置为模态的 dialog->setModal(false); //此处ture为模态,false为非模态 dialog->show(); }
main.cpp程序:
//2014/8/3 wayne HDU //问题描述:(1)创建一个mainwindow(2)创建一个dialog,并且展示modal和modaless的区别 #include "mainwindow.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); return a.exec();
Part II——对话框的模态和非模态
1、 建立一个对话框类:
2、 对话框中放置pushbutton和TextEdit:
3、 转到主窗口菜单栏New Window的槽:
4、 在槽中插入如下代码(并且在mainwindow.h中要建立对话框的指针):
5、显示结果如下:
(1)非模态显示(dialog->setModal(false)):
(2)模态显示(dialog->setModal(ture)):
给出完整程序(只给出需要填写代码和有注释部分,无改动的不给出):
mainwindow.h程序:
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include"mydialog.h" namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); private slots: void on_actionNew_Window_triggered(); private: Ui::MainWindow *ui; MyDialog *dialog; //添加私有成员,为一个dailog(窗口)的指针 }; #endif // MAINWINDOW_H
mainwindow.cpp程序:
#include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); //把给定的组件设定成主窗口的中央组件,这里是把plainTextEdit设为窗口的中央组件 setCentralWidget(ui->plainTextEdit); } MainWindow::~MainWindow() { delete ui; } void MainWindow::on_actionNew_Window_triggered() { //新建一个窗口对象,其中的this指定了新的窗口的父对象是MainWindow,在销毁Mainwindow时也会销毁子对象,即该窗口对象 dialog = new MyDialog(this); //Modal属性决定了show()应该将弹出的dialog设置为模态还是非模态 //默认情况下该属性为false并且show()弹出的窗口是非模态的 //把这个属性设置为true就详单与设置QWidget::windowModality为Qt::ApplicationModal //执行exec()忽略这个Modal这个属性,并且把弹出的dialog设置为模态的 dialog->setModal(false); //此处ture为模态,false为非模态 dialog->show(); }
main.cpp程序:
//2014/8/3 wayne HDU //问题描述:(1)创建一个mainwindow(2)创建一个dialog,并且展示modal和modaless的区别 #include "mainwindow.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); return a.exec();