01 .创建基础界面
利用界面文件(.ui)创建界面,详情参见
02.对话框-模态/非模态
1.模态对话框
模态对话框: 创建对话框后,不可以对其他窗口进行操作。除非关闭该对话框才能进行其他操作。(具有阻塞功能)
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include"QDialog"
#include"QDebug"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
//点击新建菜单项,弹出对话框
connect(ui->actionnew,&QAction::triggered,this,[=](){
//对话框,有两种
//模态对话框(不可以对其他窗口进行操作) 非模态对话框(可以对其他窗口操作)
// 1. 模态对话框
QDialog dlg(this);
dlg.resize(200,100);
dlg.exec();//阻塞
qDebug()<<"弹出对话框!";
});
}
MainWindow::~MainWindow()
{
delete ui;
}
2.非模态对话框
非模态对话框: 创建对话框后,可以对其他窗口进行操作。
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include"QDialog"
#include"QDebug"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
//点击新建菜单项,弹出对话框
connect(ui->actionnew,&QAction::triggered,this,[=](){
//对话框,有两种
//模态对话框(不可以对其他窗口进行操作) 非模态对话框(可以对其他窗口操作)
// 1. 模态对话框
// QDialog dlg(this);
// dlg.resize(200,100);
// dlg.exec();//阻塞
// qDebug()<<"弹出对话框!";
//2.非模态对话框创建
//QDialog dlg2(this);//创建到栈上,一闪而过
QDialog * dlg2 = new QDialog(this);
dlg2->resize(200,100);
dlg2->show();
//需要设置属性 dlg2
dlg2->setAttribute(Qt::WA_DeleteOnClose);
//上述操作,在点击关闭对话框后,对话框对象就会被释放,
// 防止重复创建对象引起内存泄露
});
}
MainWindow::~MainWindow()
{
delete ui;
}
03 消息对话框-QMessageBox
消息对话框:包含四个公有成员函数,实现消息功能(错误、信息、问题、警告)
# include < QMessageBox >
1.错误对话框
QMessageBox::critical(this,"错误!","critical");
2.信息对话框
QMessageBox::information(this,"info","信息");
3.问题对话框
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include"QDialog"
#include"QDebug"
#include"QMessageBox"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
//点击新建菜单项,弹出对话框
connect(ui->actionnew,&QAction::triggered,this,[=](){
//对话框,有两种
//模态对话框(不可以对其他窗口进行操作) 非模态对话框(可以对其他窗口操作)
// 1. 模态对话框
// QDialog dlg(this);
// dlg.resize(200,100);
// dlg.exec();//阻塞
// qDebug()<<"弹出对话框!";
//2.非模态对话框创建
//QDialog dlg2(this);//创建到栈上,一闪而过
QDialog * dlg2 = new QDialog(this);
dlg2->resize(200,100);
dlg2->show();
//需要设置属性 dlg2
dlg2->setAttribute(Qt::WA_DeleteOnClose);
//上述操作,在点击关闭对话框后,对话框对象就会被释放,
// 防止重复创建对象引起内存泄露
//使用标准对话框 QMessageBox
//错误对话框
//QMessageBox::critical(this,"错误!","critical");
//信息对话框
//QMessageBox::information(this,"info","信息");
//问题对话框:默认是yes/no两个选项
// QMessageBox::question(this,"ques","提问");
QMessageBox::question(this,"ques","提问",QMessageBox::Save|QMessageBox::Cancel,
QMessageBox::Cancel);
// 参数1:父亲,参数2:标题,参数3:提示内容;参数4:两个选项;参数5:默认关联回车选项
if (QMessageBox::Save==QMessageBox::question(this,"ques","提问",QMessageBox::Save|QMessageBox::Cancel,QMessageBox::Cancel))
{
qDebug()<<"选择的是保存"<<endl;
}
if (QMessageBox::Cancel==QMessageBox::question(this,"ques","提问",
QMessageBox::Save|QMessageBox::Cancel,
QMessageBox::Cancel))
{
qDebug()<<"选择的是取消"<<endl;
}
});
}
MainWindow::~MainWindow()
{
delete ui;
}
4.警告对话框
QMessageBox::warning(this,"warning","警告");
04 其他标准对话框
标准对话框:是QT内置的一系列对话框,用于简化开发。事实上,有很多对话框都是通用的,比如打卡文件、打印设置等。这些对话框在所有程序中几乎相同,因此没有必要在每一个程序中都自己实现这么一个对话框。Qt内置的标准对话框可以分为以下几类:
(1)QColorDialog:选择颜色
(2)QFileDialog:选择文件或者目录
(3)QFontDialog:选择字体
(4)QInputDialog:允许用户输入一个值,并将其值返回
(5)QMessageBox:模态对话框,用于显示信息、询问问题等
(6)QPageSetupDialog:为打印机提供纸张相关的选项
(7)QPrintDialog:打印机配置
(8)QPrintPreviewDialog:打印预览
(9)QProgressDialog:显示操作过程
1.颜色对话框
QColor color=QColorDialog::getColor(QColor(255,0,0));
qDebug()<<"r="<<color.red()<<"g="<<color.green()<<" b="<<color.blue();
2.文件对话框
QString strf=QFileDialog::getOpenFileName(this,"打开文件","F:\\","(*.rar)");
3.字体对话框
bool flag;
QFont gf=QFontDialog::getFont(&flag,QFont("华文仿宋",36)); qDebug()<<"字体:"<<gf.family()<<"字号:"<<gf.bold()<<endl;