【转】QT创建子对话框的方法

时间:2023-03-09 03:50:53
【转】QT创建子对话框的方法

原文地址:http://blog.****.net/baidu_18991997/article/details/42713159

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

1.建立一个主界面,主界面中有一个pushbotton按键。

2.右键项目->添加新文件->Qt设计师界面类

Part II——对话框的模态和非模态

1、  建立一个对话框类:

【转】QT创建子对话框的方法

【转】QT创建子对话框的方法

【转】QT创建子对话框的方法

2、  对话框中放置pushbutton和TextEdit:

【转】QT创建子对话框的方法

3、  转到主窗口菜单栏New Window的槽:

【转】QT创建子对话框的方法

【转】QT创建子对话框的方法

4、  在槽中插入如下代码(并且在mainwindow.h中要建立对话框的指针):

【转】QT创建子对话框的方法

【转】QT创建子对话框的方法

5、显示结果如下:

(1)非模态显示(dialog->setModal(false)):

【转】QT创建子对话框的方法

(2)模态显示(dialog->setModal(ture)):

【转】QT创建子对话框的方法

给出完整程序(只给出需要填写代码和有注释部分,无改动的不给出):

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 = );
~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、  建立一个对话框类:

【转】QT创建子对话框的方法

【转】QT创建子对话框的方法

【转】QT创建子对话框的方法

2、  对话框中放置pushbutton和TextEdit:

【转】QT创建子对话框的方法

3、  转到主窗口菜单栏New Window的槽:

【转】QT创建子对话框的方法

【转】QT创建子对话框的方法

4、  在槽中插入如下代码(并且在mainwindow.h中要建立对话框的指针):

【转】QT创建子对话框的方法

【转】QT创建子对话框的方法

5、显示结果如下:

(1)非模态显示(dialog->setModal(false)):

【转】QT创建子对话框的方法

(2)模态显示(dialog->setModal(ture)):

【转】QT创建子对话框的方法

给出完整程序(只给出需要填写代码和有注释部分,无改动的不给出):

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 = );
~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();

相关文章