Qt学习笔记6——P19-22. 资源文件添加,各种对话框
- P19. 资源文件添加
- P20. 模态和非模态对话框创建
- P21. 消息对话框
- P22. 其他标准对话框
- (P19. 资源文件添加)(创建了新项目)
(这次创建时,Details 里的 Base class 选的是 QMainWindow;并且勾选 Generate form)
- forms 里的 .ui 中,菜单栏里的菜单项,直接设置时不能设置成中文(因为Qt会直接根据你设置的名字来命名这个控件),设置完英文名之后,可以在下面(右下角)的“text”中修改为合适的中文名(届时中文名会替代之前设置的英文名,放在ui上)。
- ui 界面右上角,右键最上层的对象,可以直接添加工具栏和状态栏。
- 铆接部件:左侧“Containers”下有个“Dock Widget”,直接拖拽添加。(对于铆接部件,整个界面(Qt)右下角的属性可以设置它的停靠范围等等属性)
- 核心部件:左侧“Input Widgets”下有个“Text Edit”,直接拖拽添加。
- 用代码对按钮添加图片:
1. 使用绝对路径:
ui->actionnew->setIcon(QIcon("F:/MyLab/MyData/QtData/one.png")); //actionnew是控件的名称
(我的没报错,但是图片没显示出来)
添加图片后运行显示空白的解决办法:图片必须要改成png格式,但是通过修改后缀名的方式是不可以的,必须要用工具转换成png格式才可以。(亲测可行;没有试别的格式行不行)(jpg也可以)
2. 使用自己添加进Qt的资源
步骤: 右键.pro 文件,选择“在Explorer中显示”,把想要添加的资源文件粘贴进去 -> 右键项目(.pro上面的)-> Add New -> 在新弹窗中,左边选 Qt,中间选 Qt Resource File,然后choose -> 给项目起个名称(英文),下一步 -> 之后会生成 “(英文名).qrc” 的文件,右键 .qrc 文件,“Open In Editor” -> 添加前缀(一般是“/”就可以),再添加文件 -> 添加完之后,点一下左下角“构建项目”(锤子一样的图标)
使用资源文件时,代码和使用绝对路径时相同,但是双引号里改为 “ : + 前缀名 + 文件名”
ui->actionnew->setIcon(QIcon(":/QtData/one.png"));
- (P20. 模态和非模态对话框创建)(创建了新项目)
- 模态对话框:弹出后,不可以对其他窗口进行操作
- 非模态对话框:弹出后,可以对其他窗口进行操作
1 //点击一个新建按钮 弹出一个对话框
2 connect(ui->actionNew,&QAction::triggered,this,[=](){
3 //对话框 分类:
4 //模态对话框(不可以对其他窗口进行操作) 非模态对话框(可以对其他窗口进行操作)
5 //创建模态对话框
6 // QDialog dlg(this);
7 // dlg.resize(200,100);//重设对话框大小
8 // dlg.exec();
9 // qDebug()<<"The modal dialog box pops up";
10
11 //创建非模态对话框
12 QDialog * dlg2= new QDialog(this); //模态对话框在栈区创建的,但由于exec()阻塞了,所以运行后不会释放掉;但是非模态对话框得在堆区创建,避免程序运行完直接释放掉(一闪而过,保留不住窗口)
13 dlg2->resize(200,100);
14 dlg2->show();
15 dlg2->setAttribute(Qt::WA_DeleteOnClose);//点击关闭对话框时,释放此QDialog的内存(避免有人一直在窗口中新建对话框,造成内存泄漏)(55号属性)
16 qDebug()<<"The modeless dialog box pops up";
17
18 });
- (P21. 消息对话框)(沿用了上P项目)
- 标准对话框——消息对话框 #include <QMessageBox>
- QMessageBox 静态成员函数 创建对话框
- 错误critical 信息information 提问question 警告warning 都是模态对话框
- 返回值也是 StandardButton 类型,利用返回值判断用户的输入
1 //消息对话框
2 //错误对话框
3 QMessageBox::critical(this,QString::fromLocal8Bit("错误对话框标题"),QString::fromLocal8Bit("内容"));
4
5 //信息对话框
6 QMessageBox::information(this,QString::fromLocal8Bit("信息对话框标题"),QString::fromLocal8Bit("内容"));
7
8 //提问对话框
9 //参数:1.父亲 2.标题 3.内容 4.按键类型 5.默认关联回车按键
10 if(QMessageBox::Save == QMessageBox::question(this,"title","content",QMessageBox::Save | QMessageBox::Cancel,QMessageBox::Cancel)) //因为QMessageBox::question的返回值类型是QMessageBox::StandardButton,所以能直接和QMessageBox::Save比较
11 {
12 qDebug()<<QString::fromLocal8Bit("选择的是保存");
13 }
14 else
15 {
16 qDebug()<<QString::fromLocal8Bit("选择的是取消");
17 }
18
19 //警告对话框
20 QMessageBox::warning(this,QString::fromLocal8Bit("标题"),QString::fromLocal8Bit("内容:警告"));
- (P22. 其他标准对话框)(沿用了上P项目)
- 颜色对话框 QColorDialog::getColor
//颜色对话框 #include <QColorDialog>
QColor color = QColorDialog::getColor(QColor(0,255,0)); //(0,255,0,)是我设置的默认弹出时 颜色对话框选择的颜色
qDebug()<<"r = "<<color.red()<<"g = "<<color.green()<<"b = "<<color.blue();
- 文件对话框 QFileDialog::getOpenFileName(打开一个文件)
1 //文件对话框 #include <QFileDialog>
2 //参数:1.父亲 2.标题 3.路径 4.过滤文件格式(可不写)
3 //返回值是选取的路径
4 QString str = QFileDialog::getOpenFileName(this,QString::fromLocal8Bit("标题:打开文件"),"C:\\Users\\LENOVO\\Desktop","*.txt");
5 qDebug()<<str;
- 字体对话框 QFontDialog::getFont
1 //字体对话框 #include <QFontDialog>
2 bool flag1;
3 QFont font1 = QFontDialog::getFont(&flag1,QFont(QString::fromLocal8Bit("楷体"),36));
4 qDebug()<<QString::fromLocal8Bit("字体")<<font1.family()<<QString::fromLocal8Bit("字号")<<font1.pointSize()<<QString::fromLocal8Bit("是否加粗")<<font1.bold()<<QString::fromLocal8Bit("是否加斜")<<font1.italic();
(〃>_<;〃)(〃>_<;〃)(〃>_<;〃)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧