码迷,mamicode.com
首页 > 其他好文 > 详细

QT学习二 按钮新建对话框

时间:2019-03-13 00:05:22      阅读:377      评论:0      收藏:0      [点我收藏+]

标签:clu   class   span   模态   方法   div   程序   efi   bsp   

mainwindow新建方法MainWindowOpen打开一个新的对话框

mainWindow.h
 1 #ifndef MAINWINDOW_H
 2 #define MAINWINDOW_H
 3 
 4 #include <QMainWindow>
 5 
 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 = nullptr);
16     ~MainWindow();
17     void MainWindowOpen();
18 
19 private:
20     Ui::MainWindow *ui;
21 };
22 
23 #endif // MAINWINDOW_H
mainWindow.cpp
 1 #include "mainwindow.h"
 2 #include "ui_mainwindow.h"
 3 #include <QDialog>
 4 MainWindow::MainWindow(QWidget *parent) :
 5     QMainWindow(parent),
 6     ui(new Ui::MainWindow)
 7 {
 8     ui->setupUi(this);
 9 }
10 
11 MainWindow::~MainWindow()
12 {
13     delete ui;
14 }
15 void MainWindow::MainWindowOpen(){
16     QDialog *pt = new QDialog(this);
17     pt->setWindowTitle("This is a QDialog");
18     pt->exec();
19 }

之后在main.cpp中使用QObject::connect()使用信号量链接起来

 1 #include "mainwindow.h"
 2 #include <QApplication>
 3 #include <QObject>
 4 #include <QPushButton>
 5 int main(int argc, char *argv[])
 6 {
 7     QApplication a(argc, argv);
 8     MainWindow w;
 9     QPushButton* button = new QPushButton(&w);
10     button->setText("Click");
11     QObject::connect(button,&QPushButton::clicked,&w,&MainWindow::MainWindowOpen);
12     w.show();
13     return a.exec();
14 }

效果

技术图片

如果有设置对话框的父控件,则对话框出现在父控件的中心位置

QDialog::exec()实现应用程序级别的对话框——当对话框出现时,我们不能对主窗口作交互

QDialog::open()实现窗口级别的模态对话框

技术图片

 

 

QDialog::show()实现非模态对话框

——当对话框出现时,我们依旧可以对主窗口作交互

 技术图片

 

为防止内存泄漏,我们可以使用dialog->setAttribute(Qt::WA_DeleteOnClose);以在对话框关闭时自动释放对话框,防止内存泄漏。

QT学习二 按钮新建对话框

标签:clu   class   span   模态   方法   div   程序   efi   bsp   

原文地址:https://www.cnblogs.com/xfww/p/10520469.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!