• 【转】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();  
  • 相关阅读:
    也谈用反射实现Enum→String映射:一种重视性能的方法【转载】
    C#对象的浅拷贝,深拷贝【转载】
    int转byte[],byte[]转int
    TF31003:您的用户帐户没有连接到 Team Foundation Server 的权限
    关于枚举的双语显示问题
    浅析C#深拷贝与浅拷贝
    反射枚举变量
    C#路径/文件/目录/I/O常见操作汇总(二)
    【转】正确理解ThreadLocal
    【转】JSP的九个隐含对象
  • 原文地址:https://www.cnblogs.com/waimen/p/7955350.html
Copyright © 2020-2023  润新知