- 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格式才可以。(亲测可行;没有试别的格式行不行)
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. 消息对话框)
- 标准对话框——消息对话框 #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. 其他标准对话框)
- 颜色对话框 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();
标签:模态,Qt,对话框,笔记,学习,添加,QString,QMessageBox From: https://www.cnblogs.com/wjjgame/p/16573580.html