目录
模态对话框
exec阻塞
代码
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
#include <QDialog>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
//点击新建菜单项,弹出对话框
connect(ui->action_XinJian,&QAction::triggered,this,[=](){
//对话框
//模态对话框(不可以对其他窗口进行操作)
QDialog dlg(this);
dlg.resize(200,100);
dlg.exec();
qDebug()<<"111";
});
}
MainWindow::~MainWindow()
{
delete ui;
}
结果
非模态对话框
show在栈上会一闪而过
所以new在栈区
设置属性,dlg2->setAttribute(Qt::WA_DeleteOnClose);
代码
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
#include <QDialog>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
//点击新建菜单项,弹出对话框
connect(ui->action_XinJian,&QAction::triggered,this,[=](){
//对话框
//模态对话框(不可以对其他窗口进行操作)
QDialog dlg(this);
dlg.resize(200,100);
dlg.exec();
qDebug()<<"111";
//非模态对话框创建
//QDialog dlg2(this);//创建到栈上,一闪而过
QDialog *dlg2=new QDialog(this);
dlg2->resize(200,100);
dlg2->show();
dlg2->setAttribute(Qt::WA_DeleteOnClose);//设置属性,关闭对话框后从栈上删除,避免栈满
});
}
MainWindow::~MainWindow()
{
delete ui;
}
结果
系统标准对话框
静态成员函数
QMessageBox::警告、信息、错误、问题
5个参数,父亲、标题、提示内容、按键类型、关联回车按钮
代码
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
#include <QDialog>
#include <QMessageBox>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
//点击新建菜单项,弹出对话框
connect(ui->action_XinJian,&QAction::triggered,this,[=](){
//使用标准对话框,QMessageBox
//错误对话框
QMessageBox::critical(this,"错误!","错误啦!");
//信息对话框
QMessageBox::information(this,"信息","信息内容");
//询问对话框
/*
* 参数1:父亲
* 参数2:标题
* 参数3:提示内容
* 参数4:按键类型
* 参数5:关联回车按键
*/
if(QMessageBox::Save==QMessageBox::question(this,"问题","干嘛?",QMessageBox::Save|QMessageBox::Cancel,QMessageBox::Save)){
qDebug()<<"点击了保存";
}
else{
qDebug()<<"点击了取消";
}
//警告对话框
QMessageBox::warning(this,"警告","禁止");
});
}
MainWindow::~MainWindow()
{
delete ui;
}
结果
颜色对话框
QColorDialog
getColor,返回QColor
代码
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
#include <QDialog>
#include <QMessageBox>
#include <QColorDialog>
#include <QFileDialog>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
//点击新建菜单项,弹出对话框
connect(ui->action_XinJian,&QAction::triggered,this,[=](){
//选择颜色对话框
QColor color=QColorDialog::getColor(QColor(255,0,0));
qDebug()<<color.red()<<color.green()<<color.blue();
});
}
MainWindow::~MainWindow()
{
delete ui;
}
结果
标准文件对话框
QFileDialog
getOpenFileName(父亲,标题,默认路径,过滤文件格式)
返回值是选取文件得路径
代码
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
#include <QDialog>
#include <QMessageBox>
#include <QColorDialog>
#include <QFileDialog>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
//点击新建菜单项,弹出对话框
connect(ui->action_XinJian,&QAction::triggered,this,[=](){
//文件对话框
QString path=QFileDialog::getOpenFileName(this,"打开文件","/home/cet/Qt/JiaoCheng/5/5","*.txt *.cpp");
qDebug()<<path;
});
}
MainWindow::~MainWindow()
{
delete ui;
}