Qt 之 对话框

对话框类

#include <QDialog>		//对话框类

模态对话框

阻塞式对话框。必须操作当前对话框后才可以进入后面的操作。

#include "mainwindow.h"
#include <QMenu>
#include <QMenuBar>
#include <QAction>
#include <QDialog>          //对话框类
#include <QDebug>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
	QMenuBar *mBar = menuBar();
	this->setMenuBar(mBar);
    QMenu *menu = mBar->addMenu("Dialog");
    QAction *p1 = menu->addAction("模态对话框")connec(p1, &QAction::triggered, 
			[=]()
			{
            	QDialog dlg;
            	dlg.exec();
            	qDebug()<<"模态对话框结束";
            }
          );
}

非模态对话框

#include "mainwindow.h"
#include <QMenu>
#include <QMenuBar>
#include <QAction>
#include <QDialog>          //对话框类
#include <QDebug>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
	QMenuBar *mBar = menuBar();
	this->setMenuBar(mBar);
    QMenu *menu = mBar->addMenu("Dialog");
    QAction *p_action = menu->addAction("非模态对话框");
    connec(p_action, &QAction::triggered, 
			[=]()
			{
            	//QDialog *p_dlg = new QDialog(this);			//在堆区创建,但是如果反复创建,有可能导致内存泄漏
            	//p_dlg->show();
            	
            	QDialog *p_dlg = new QDialog;					//在堆区创建
            	p_dlg->setAttribute(Qt::WA_DeleteOnClose);		//设置属性WA_DeleteOnClose
            	p_dlg->show();
            }
          );
}

MessageBox- 关于对话框

QMessageBox
属于模态对画框的一种,用户必须点击后才能消除掉。

#include "mainwindow.h"
#include <QMenu>
#include <QMenuBar>
#include <QAction>
#include <QDialog>          //对话框类
#include <QDebug>
#include <QMessageBox>		//Message Box

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
	QMenuBar *mBar = menuBar();
	this->setMenuBar(mBar);
    QMenu *menu = mBar->addMenu("Dialog");
    QAction *p_action = menu->addAction("Message对话框");
    connect(p_action , &QAction::triggered,
           [=]()
           {
				QMessageBox::about(this, "about", "关于Qt");
		   }       
           );
}

MessageBox -问题对话框

#include "mainwindow.h"
#include <QMenu>
#include <QMenuBar>
#include <QAction>
#include <QDialog>          //对话框类
#include <QDebug>
#include <QMessageBox>		//Message Box

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
	QMenuBar *mBar = menuBar();
	this->setMenuBar(mBar);
    QMenu *menu = mBar->addMenu("Dialog");
    QAction *p_action = menu->addAction("Message对话框");
    connect(p_action , &QAction::triggered,
           [=]()
           {
				int ret = QMessageBox::question(this, 
				           "question", "Are you OK?",
                		     QMessageBox::Ok | QMessageBox::Cancel);
                switch(ret)
                {
					case QMessageBox::Ok:
						qDebug()<<"I am Ok";
					break;
					case QMessageBox::Cancel:
						qDebug()<<"I am bad";
					break;
					default:
					break;
				}
		   }       
           );
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值