Bootstrap

Qt5 弹出窗口的创建

为将要进行的工作做准备。

代码实现功能:单击某个按钮后,弹出对话框,对话框中的内容可自行设计。

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程序:

[cpp]  view plain copy
  1. #ifndef MAINWINDOW_H  
  2. #define MAINWINDOW_H  
  3.   
  4. #include <QMainWindow>  
  5. #include"mydialog.h"  
  6. namespace Ui {  
  7. class MainWindow;  
  8. }  
  9.   
  10. class MainWindow : public QMainWindow  
  11. {  
  12.     Q_OBJECT  
  13.   
  14. public:  
  15.     explicit MainWindow(QWidget *parent = 0);  
  16.     ~MainWindow();  
  17.   
  18. private slots:  
  19.     void on_actionNew_Window_triggered();  
  20.   
  21. private:  
  22.     Ui::MainWindow *ui;  
  23.     MyDialog *dialog;   //添加私有成员,为一个dailog(窗口)的指针  
  24. };  
  25.   
  26. #endif // MAINWINDOW_H  

mainwindow.cpp程序:

[cpp]  view plain copy
  1. #include "mainwindow.h"  
  2. #include "ui_mainwindow.h"  
  3.   
  4. MainWindow::MainWindow(QWidget *parent) :  
  5.     QMainWindow(parent),  
  6.     ui(new Ui::MainWindow)  
  7. {  
  8.     ui->setupUi(this);  
  9.     //把给定的组件设定成主窗口的中央组件,这里是把plainTextEdit设为窗口的中央组件  
  10.     setCentralWidget(ui->plainTextEdit);  
  11. }  
  12.   
  13. MainWindow::~MainWindow()  
  14. {  
  15.     delete ui;  
  16. }  
  17.   
  18. void MainWindow::on_actionNew_Window_triggered()  
  19. {  
  20.     //新建一个窗口对象,其中的this指定了新的窗口的父对象是MainWindow,在销毁Mainwindow时也会销毁子对象,即该窗口对象  
  21.     dialog = new MyDialog(this);  
  22.     //Modal属性决定了show()应该将弹出的dialog设置为模态还是非模态  
  23.     //默认情况下该属性为false并且show()弹出的窗口是非模态的  
  24.     //把这个属性设置为true就详单与设置QWidget::windowModality为Qt::ApplicationModal  
  25.     //执行exec()忽略这个Modal这个属性,并且把弹出的dialog设置为模态的  
  26.     dialog->setModal(false);    //此处ture为模态,false为非模态  
  27.     dialog->show();  
  28. }  

main.cpp程序:

[cpp]  view plain copy
  1. //2014/8/3 wayne HDU  
  2. //问题描述:(1)创建一个mainwindow(2)创建一个dialog,并且展示modal和modaless的区别  
  3. #include "mainwindow.h"  
  4. #include <QApplication>  
  5.   
  6. int main(int argc, char *argv[])  
  7. {  
  8.     QApplication a(argc, argv);  
  9.     MainWindow w;  
  10.     w.show();  
  11.   
  12.     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程序:

[cpp]  view plain copy
  1. #ifndef MAINWINDOW_H  
  2. #define MAINWINDOW_H  
  3.   
  4. #include <QMainWindow>  
  5. #include"mydialog.h"  
  6. namespace Ui {  
  7. class MainWindow;  
  8. }  
  9.   
  10. class MainWindow : public QMainWindow  
  11. {  
  12.     Q_OBJECT  
  13.   
  14. public:  
  15.     explicit MainWindow(QWidget *parent = 0);  
  16.     ~MainWindow();  
  17.   
  18. private slots:  
  19.     void on_actionNew_Window_triggered();  
  20.   
  21. private:  
  22.     Ui::MainWindow *ui;  
  23.     MyDialog *dialog;   //添加私有成员,为一个dailog(窗口)的指针  
  24. };  
  25.   
  26. #endif // MAINWINDOW_H  

mainwindow.cpp程序:

[cpp]  view plain copy
  1. #include "mainwindow.h"  
  2. #include "ui_mainwindow.h"  
  3.   
  4. MainWindow::MainWindow(QWidget *parent) :  
  5.     QMainWindow(parent),  
  6.     ui(new Ui::MainWindow)  
  7. {  
  8.     ui->setupUi(this);  
  9.     //把给定的组件设定成主窗口的中央组件,这里是把plainTextEdit设为窗口的中央组件  
  10.     setCentralWidget(ui->plainTextEdit);  
  11. }  
  12.   
  13. MainWindow::~MainWindow()  
  14. {  
  15.     delete ui;  
  16. }  
  17.   
  18. void MainWindow::on_actionNew_Window_triggered()  
  19. {  
  20.     //新建一个窗口对象,其中的this指定了新的窗口的父对象是MainWindow,在销毁Mainwindow时也会销毁子对象,即该窗口对象  
  21.     dialog = new MyDialog(this);  
  22.     //Modal属性决定了show()应该将弹出的dialog设置为模态还是非模态  
  23.     //默认情况下该属性为false并且show()弹出的窗口是非模态的  
  24.     //把这个属性设置为true就详单与设置QWidget::windowModality为Qt::ApplicationModal  
  25.     //执行exec()忽略这个Modal这个属性,并且把弹出的dialog设置为模态的  
  26.     dialog->setModal(false);    //此处ture为模态,false为非模态  
  27.     dialog->show();  
  28. }  

main.cpp程序:

[cpp]  view plain copy
  1. //2014/8/3 wayne HDU  
  2. //问题描述:(1)创建一个mainwindow(2)创建一个dialog,并且展示modal和modaless的区别  
  3. #include "mainwindow.h"  
  4. #include <QApplication>  
  5.   
  6. int main(int argc, char *argv[])  
  7. {  
  8.     QApplication a(argc, argv);  
  9.     MainWindow w;  
  10.     w.show();  
  11.   
  12.     return a.exec();  
;