原文地址: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();