首页 > 其他分享 >Qt学习笔记6

Qt学习笔记6

时间:2022-08-16 13:13:28浏览次数:64  
标签:模态 Qt 对话框 笔记 学习 添加 QString QMessageBox

  • 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

相关文章

  • 操作系统学习笔记3 | 操作系统简史
    读史使人明智。通过操作系统的历史,了解操作系统是怎么编出来的,为什么要有那些模块,哪些东西才是核心。参考资料:课程:哈工大操作系统(本部分对应L6&&L7)实验:操作系统原......
  • Qt 怎么检测鼠标在不在某个控件上
    方式一:事件过滤器//构造函数内:记得安装事件过滤器this->installEventFilter(this);boolMainWidget::eventFilter(QObject*obj,QEvent*event){ //判断部件 if......
  • 客户流失?来看看大厂如何基于spark+机器学习构建千万数据规模上的用户留存模型 ⛵
    ......
  • 《正念》读书笔记2
       无为之为,无为不是懒惰,而是与之相反,是让一切顺其自然,使一切按其本来的方式发展,要达到无为的境界,我们要付出很多努力,这是一种挥洒自如的努力,需要用一生时间培养的“......
  • 《被讨厌的勇气》读书笔记2
      人的一切烦恼都来自人际关系,而要解决人际烦恼,就需要进行课题分离,就是他人的课题和自己的课题进行分离。目的就是共同体感觉。其中人际关系中最重要的是自我接纳,他人......
  • LCA学习笔记
    简介LCA(LowestCommonAncestor)中文名是最近公共祖先。两个节点的最近公共祖先,就是这两个点的公共祖先里面,离根最远的那个。LCA问题的求解有多种方法,如:倍增、Tarjan、树......
  • ST表学习笔记
    简介ST表是用于解决可重复贡献问题(满足\(x\)操作\(x=x\),如\(max(x,x)=x\))的数据结构,它在区间查询最值时可以做到\(O(n\logn)\)预处理,\(O(1)\)查询,是种优秀的......
  • BIT学习笔记
    基础树状数组:先放一张图:图中黑色的框为\(a\)数组(原数组)。图中黑色的框为\(t\)数组(树状数组)。我们可以得到$t[i]=\sum_{j=1}^{j\le2k}{a[i-2k+j]}$。在这里......
  • Qt中使用qDebug()打印中文有时会报错的解决方法
    选择菜单栏的“工具”->“选项”,在新窗口的“文本编辑器”->右侧“UTF-8BOM”选择“如果编码是UTF-8则添加”;之后qDebug打印出的中文不会报错,但是会乱码,这时候要用......
  • Day02笔记
    01.引用的使用场景(重点)1.引用作为函数参数//1.引用作为函数参数voidfunc(int&a,int&b){ intsum=a+b; cout<<"sum="<<sum<<endl;}voidtest01(){......