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();

 (〃>_<;〃)(〃>_<;〃)(〃>_<;〃)

posted @ 2022-08-16 12:55  我会变强的  阅读(106)  评论(0编辑  收藏  举报