当前位置: 首页 > news >正文

qt常用控件--01

文章目录

  • qt常用控件--01
    • 上一篇文章的补充
    • windowTitle属性
    • windowIcon属性
    • windowOpaCity属性
    • cursor属性
    • font属性
    • 结语

很高兴和大家见面,给生活加点impetus!!开启今天的编程之路!!
在这里插入图片描述
今天我们进一步c++11中常见的新增表达
作者:٩( ‘ω’ )و260
我的专栏:qt,Linux,C++进阶,C++初阶,数据结构初阶,题海探骊,c语言
欢迎点赞,关注!!

qt常用控件–01

继上章,我们已经讲解了两个有关QWidget中的属性,分别是enable属性和geometry属性,我们将来介绍新的几个属性

上一篇文章的补充

关于window frame对geometry的影响:
在这里插入图片描述
window frame包含最小化,最大化,关闭等操作,即qt运行界面最上方的这一栏以及最左侧和最右侧都有这样的一块细边。这个东西是系统自带的。
再来看这样的一个图:
在这里插入图片描述
最左上角是windowframe的原点,而下方一点是Widget的原点~~
所以在设置坐标时,有一个setGeometry接口,还有一个setFrameGeometry接口,总之,如果设置控件的位置的话,需要考虑到window frame的影响
来看一个示例:
在这里插入图片描述
其实不是的,我们来看,在创建rect1和rect2的时候,我放在了Widget
的构造函数中,此时我的整个面板都没有构造好,怎么可能会有windowframe呢?
我们只需要来添加一个按钮即可:
因为此时如果用户点击按钮,说明此时按钮出现在了面板上,说明此时面板已经构建成功了,来看结果:
在这里插入图片描述
多出来的部分就是系统加的窗口栏和左右细边栏~~

windowTitle属性

api接口:
在这里插入图片描述

结论:windowTitle属性只针对顶部窗口级别生效,对Widget类别是不生效的。

来看代码:
在这里插入图片描述

结论:这里有点鸡肋,即虽然我们代码使用错误,但是qt还是不会报错,这样就不易发现错误

windowIcon属性

api接口:
在这里插入图片描述
这里图标包含:程序运行的图标,程序运行时的图标等等,来看下例:
在这里插入图片描述

结论:windowIcon对顶部窗口级别才生效,对普通Widget类别不生效

即:在qt中,我们可以修改上述程序运行时的图标~
如何修改呢?
我们先要准备一张图片:
这里我准备了一张篮球的图片,具体自己想要的图片可以去到阿里巴巴矢量图标库中自取 ~
我们直接来看结果:
在这里插入图片描述
我们创建OIcon对象为什么是在栈上创建,而不是在堆上创建,难道栈中的图片销毁了还能够显示吗?

结论:1:QIcon,以及后面的QCursor,QFont,QPixMap这些类默认不支持添加到对象树上,无法指定父类对象,同时,不管这些对象释不释放,其中的图片资源都不会销毁!!
2:这里寻找文件的方式需要添加一个路径,而且,这个路径不能带有中文

当然,我们这里填写的是绝对路径,也可以填相对路径,以 . (一个点:表示当前路径)和 … (两个点:表示上一级路径)。

又有一个问题了?当我们写的程序发布给用户的时候,能够保证用户在这个路径下也有这个图片吗?就算保证有了,难道用户不会误删吗?

所以,最后一个方式也是最常用的方式qrc机制:
即我们将图片信息给提取出来,将图片信息转换成二进制数字放到编译的c++代码中,即和exe文件融为一体了。这样这个图片信息能和exe文件同生共死!!
步骤:创建xml文件,后缀为qrc->在该文件中加入图片信息->qt项目去访问这个文件信息即可;
下面直接展示步骤:
在这里插入图片描述
随后我们必须在弹出的这个项目界面文件夹中添加该图片,即必须在同级文件中或者是改级下一级的子文件中添加该图片
在这里插入图片描述
先来看结果:
在这里插入图片描述

总结:添加资源之后,qt项目文件想要去访问xml文件中的资源,应写为“:+ 前缀 + 文件名” ,“:”表示需要去访问xml文件中的内容了,然后再写出资源中的文件名即可。其实这里qt创建了一个虚拟目录,本质上其实是没有的
其实这个文件中存储图片的信息就是一个数组,里面存储的是16进制信息

windowOpaCity属性

api接口:
在这里插入图片描述
我们直接来使用代码举例,这里我使用两个PushButton并关联上对应的槽函数:
在这里插入图片描述
此时我们来看打印日志:
在这里插入图片描述
我们发现这里不是呈现0.1的形式增加或减少的,其实这是数据在内存中的存储方式不同,分为整形在内存中存储和浮点数在内存中存储。这里不再细细说明,只需要记得,浮点数在内存中的存储很多时候都是近似值,所以,浮点数不适合比较大小,如0.1 + 0.2 == 0.3编译器会返回false

这里还有一个细节,在setWindowPoacity()函数中,本身就有判断现在这个浮点数是否合法,即我把if判断条件语句去掉之后,仍然不会报错,是因为内部自己已经判断了,这是防御性编程的结果,即不管外界用户输入这个浮点数怎样,都是能够使程序运行的。

cursor属性

api接口:
在这里插入图片描述
这里还是设置光标,上面的windowIcon属性是设置程序运行时的光标,这里我们是设置的鼠标悬停在改控件上的光标,同理,这里我们仍然需要采用qrc机制

其实在qt中可以直接修改这个光标,在qt designer中,控件的属性中就有这样的一栏:
在这里插入图片描述
但是其中的图标确实有些年代的气息~~
我们直接使用qrc进制,来制造我们想要的鼠标悬停在该控件上的图标。

因为无法截图显示,只能同学们自行验证,如何觉得图片太大,可以使用QPixmap中的scaled函数来执行缩放,同时,因为鼠标变化,默认热点是在左上角,但是也可以通过QPixmap对象构造Qcursor对象时,指定热点位置,单位仍然是像素。这里的热点是鼠标点击的那个点~~

来看代码:
在这里插入图片描述

font属性

api接口:
在这里插入图片描述
关于QFont这个类,里面包含了这个字体信息,包含字体大小,粗细,斜体,下划线,删除线等等:
在这里插入图片描述
当然,这些字体信息也是能够在控件属性中通过图形化界面的方式来修改的,也可以通过代码的方式。

我们直接来通过代码的形式:
在这里插入图片描述

结语

今天的内容分享到这里,不足之处欢迎大家留言指出,感谢大家支持!!
旦旦而学之,久而不怠焉,迄乎成,而亦不知其昏与庸也!!
在这里插入图片描述

相关文章:

  • 对于网站业务安全SCDN都能够从哪些方面进行保护?
  • Kafka协议开发总踩坑?3步拆解二进制协议核心
  • IP 风险画像网络违规行为识别
  • 语音相关-浏览器的自动播放策略研究和websocket研究
  • Kafka线上集群部署方案:从环境选型到资源规划思考
  • C#学习日记
  • 基于存储过程的MySQL自动化DDL同步系统设计
  • GNU Octave 基础教程(2):第一个 Octave 程序
  • 作为运营,需要在账号中给用户提供什么?
  • 文件管理总结
  • HCIP-数据通信基础
  • python高校运动会数据分析管理系统
  • LINUX620 NFS
  • 空壳V3.0,免费10开!
  • PAI推理重磅发布模型权重服务,大幅降低冷启动与扩容时长
  • Qi无线充电:车载充电的便捷与安全之选
  • 多相机三维人脸扫描仪:超写实数字人模型制作“加速器”
  • vue3组件式开发示例
  • Node.js 在前端开发中的作用与 npm 的核心理解
  • 【AI时代速通QT】第二节:Qt SDK 的目录介绍和第一个Qt Creator项目
  • 网站建设公司哪个好呀/百度入口网站
  • 衡水企业做网站推广/广告营销
  • 怎样修改网站关键词/百度云盘官网
  • 营销方案 网站/seo的基本内容
  • 众筹网站制作/品牌营销咨询公司
  • 浙江网站建设网/seo常用工具包括