资源文件、对话框
资源文件
添加资源有两种方式:本地资源和项目资源
本地资源
-
在
mainwindow.cpp
的构造方法中添加该行代码:ui->actionNew_File->setIcon(QIcon("H:/Code/Qt/picture/new_file.png"));
通过
ui
获得窗口元素,使用setIcon()
方法设置图标,需要QIcon
对象,其中资源的本地路径为绝对路径,注意:这里路径中使用/
或者\\
;
项目资源
导入资源
-
将资源放入到项目中
-
添加资源
右键项目名称->添加新文件->选择【File and Classes】中的【Qt】->选择【Qt Resource File】->点击下一步->取一个文件名,如:
res
-> 生成:res.qrc
文件 -
编辑资源文件
右键生成的
res.qrc
文件,选择Open in Editor
,即可进入编辑资源页面- 添加前缀,即上方Prefix框,作用是为资源分类
- 添加文件,即上方第2步,选择要添加的文件进行导入
- 导入成功就能看到导入的文件,如图中3
- 最后重新编译项目即可
-
使用资源
语法:
" : + 前缀名 + 文件名 "
ui->actionNew_File->setIcon(QIcon(":/Image/new_file.png"));
即可显示图标。
对话框
自定义消息框
分为两种:模态对话框和非模态对话框
在创建时需要头文件:#include<QDialog>
-
模态对话框:弹出该对话框后,不可以对其它窗口进行操作(阻塞)。
exec()
方法:通过模态的方式打开对话框;
QDialog dlg1(this); //通过类实例化一个对象,并指定父节点. dlg1.resize(120,30); //重新设置窗口大小 dlg1.exec(); //通过模态的方式打开,起到阻塞的状态
-
非模态对话框:弹出该对话框后,可以对其它窗口进行操作(不会阻塞)。
setAttribute()
方法:通过非模态的方式打开对话框,注意其中的参数,通过查阅帮助文档查看该方法获取参数,该参数是枚举类型,很多!
QDialog *dlg2 = new QDialog(this);//将该对象放在堆区,则不会被提前释放 dlg2->show(); //通过非模态的方式打开 dlg2->setAttribute(Qt::WA_DeleteOnClose); //Qt::WA_DeleteOnClose关闭窗口时释放对象,防止内存泄露
connect(ui->actionnew,&QAction::triggered,[=](){
// QDialog dlg1(this); //通过类实例化一个对象,并指定父节点.
// dlg1.resize(120,30); //重新设置窗口大小
// dlg1.exec(); //通过模态的方式打开,起到阻塞的状态
QDialog *dlg2 = new QDialog(this);//将该对象放在堆区,则不会被提前释放
dlg2->show(); //通过非模态的方式打开
dlg2->setAttribute(Qt::WA_DeleteOnClose); //Qt::WA_DeleteOnClose关闭窗口时释放对象,防止内存泄露
qDebug()<<"弹出对话框";
}); //点击新建,弹出对话框
消息对话框
在创建时需要头文件:#include<QMessageBox>
-
Critical消息对话框
-
代码:将【文件】中的【新建】与消息对话框绑定,注意
critical()
方法的参数connect(ui->actionnew,&QAction::triggered,[=](){ QMessageBox::critical(this,"critical","错误"); }); //点击新建,弹出对话框
-
效果:
-
-
information消息对话框
-
代码:将【文件】中的【新建】与消息对话框绑定,注意
information()
方法的参数connect(ui->actionnew,&QAction::triggered,[=](){ QMessageBox::information(this,"info","信息提示!"); }); //点击新建,弹出对话框
-
效果:
-
-
question消息对话框
-
代码:将【文件】中的【新建】与消息对话框绑定,注意
question()
方法的参数connect(ui->actionnew,&QAction::triggered,[=](){ QMessageBox::question(this,"question","询问"); }); //点击新建,弹出对话框
-
效果:
-
更改默认效果
connect(ui->actionnew,&QAction::triggered,[=](){ QMessageBox::question(this,"question","询问",QMessageBox::Save | QMessageBox::Cancel); }); //点击新建,弹出对话框
其中:默认效果是
QMessageBox::OK | QMessageBox::NO
,我们在这里进行修改,效果如图: -
修改默认激活状态,注意上图中【Save】是有蓝色选择的,进行修改
connect(ui->actionnew,&QAction::triggered,[=](){ QMessageBox::question(this,"question","询问",QMessageBox::Save | QMessageBox::Cancel,QMessageBox::Cancel); }); //点击新建,弹出对话框
设置第五个参数
-
得到返回值,进行逻辑判断
connect(ui->actionnew,&QAction::triggered,[=](){ if(QMessageBox::Save == QMessageBox::question(this,"question","询问",QMessageBox::Save | QMessageBox::Cancel,QMessageBox::Cancel)){ qDebug()<<"用户选择的是保存"; }else{ qDebug()<<"用户选择的是取消"; } }); //点击新建,弹出对话框
-
-
warning消息对话框
- 代码:将【文件】中的【新建】与消息对话框绑定,注意
warning()
方法的参数
connect(ui->actionnew,&QAction::triggered,[=](){ QMessageBox::warning(this,"warning","警告提示!"); }); //点击新建,弹出对话框
- 效果:
- 代码:将【文件】中的【新建】与消息对话框绑定,注意
标准对话框
-
QColorDialog
:选择颜色;-
头文件:
#include<QColorDialog>
-
代码
connect(ui->actionnew,&QAction::triggered,[=](){ QColorDialog::getColor(); QColorDialog::getColor(QColor(255,0,0)); //默认选择改为rgb:255,0,0 QColor color = QColorDialog::getColor(QColor(255,0,0)); //获得选择的颜色对象 qDebug()<<color.red()<<color.green()<<color.blue(); //打印RGB的值 }); //点击新建,弹出对话框
-
效果
-
-
QFileDialog
:选择文件或者目录;-
头文件:
#include<QFileDialog>
-
代码
connect(ui->actionnew,&QAction::triggered,[=](){ //第二个参数命名打开窗口的标题,第三个参数指定默认打开路径,第四个参数进行文件过滤,使用QString进行获取 QString str = QFileDialog::getOpenFileName(this,"打开文件","C:\\Users\\asus\\Desktop","(*.txt *.doc)"); qDebug()<<str; //打印的是文件的绝对路径,通过该路径即可进行相关文件读写操作 }); //点击新建,弹出对话框
-
效果
-
-
QFontDialog
:选择字体;-
头文件:
#include<QFontDialog>
-
代码
connect(ui->actionnew,&QAction::triggered,[=](){ bool ok; QFont font = QFontDialog::getFont(&ok,QFont("宋体",36)); //修改字体、大小并获取字体对象 qDebug()<<font.family()<<font.pointSize()<<font.bold()<<font.italic(); //字体、大小、是否加粗、是否倾斜 }); //点击新建,弹出对话框
-
效果
-
-
QInputDialog
:允许用户输入一个值,并将其返回; -
QMessageDialog
:模态对话框,用于显示消息、询问问题等; -
QPageSetupDialog
:为打印机提供纸张相关的选项; -
QPrintDialog
:打印机配置; -
QPrintPreviewDialog
:打印预览; -
QProgressDialog
:显示操作过程;