【轉】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();  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM