【Qt】QWidget中的常见属性及其功能(一)

server/2024/12/18 18:14:42/

目录

一、 enabled

例子:

二、geometry

例子:

window fram

例子 :

四、windowTiltle

五、windowIcon

例子:

qrc机制

创建qrc文件

例子:


qt中的很多内置类都是继承自QWidget的,因此熟悉QWidget的常见属性及其功能是非常有用的。

一、 enabled

设置控件是否可以使用。true表示可以使用;false表示不可以使用。

例子:

有两个按钮,点击第一个按钮后窗口标题发生改变,点击第二个按钮会使第一个按钮在可使用和不可使用状态之间切换。

API

 isEnabled():获取控件是否可用,可用返回true,不可用返回false。

setEnabled(bool enable):设置控件的可用与不可用状态的。

注意:如果一个Widget(控件)被禁用那么这个控件中的子元素也会被禁用。

二、geometry

设置控件的位置和尺寸。

 x:横坐标。y:纵坐标。width:宽度。height:高度。

geometry():获取到控件的位置和尺寸,返回一个QRect类型的对象,QRect中包含:x、y、width、height。其中x,y是控件左上角相对于父控件的坐标。

setgeometry(QRect)setgeometry(int x,int y,int width,int height):设置控件的位置和尺寸,通过QRect设置,也可以分四个属性单独进行设置。

例子:

创建五个按钮,通过点击后四个按钮对第一个按钮进行上下左右平移。

注意:如果使用通过向setGeometry()传入QRect类来设置控件位置而不是通过分四个属性单独进行设置,那么如果改变QRect中的y则QRect中的heigt也会改变。比如QRect中的下x()+5那么QRect中的width()会-5,如果通过该方法改变控件位置必须对QRect中的height()或width()也要操作。如上图中注释的代码块。

window fram

如果Widget(控件)作为一个窗口(带有标题栏、最大化、最小化、关闭按钮),那么计算该Widget就有两种情况:不包含window frame、不包含window frame。

其中Geometry()和frameGeometry()都会一个QRect,表示控件的位置和尺寸。

Geometry()返回的QRect不包含window frame。

frameGeometry()返回的QRect包含window frame。

注意:调用窗口Widget的frameGeometry()或Geometry()返回的QRect中的x,y坐标值都是相对于电脑屏幕左上角的位置。如果在窗口中创建一个按钮,然后调用按钮的frameGeometry()或Geometry()返回的QRect类型对象都是一样的,因为按钮控件没有framewindow。

例子 :

先在窗口Widget构造函数中打印该窗口控件分别调用frameGeometry()和Geometry()返回的QRect对象,然后点击窗口控件中的一个按钮,在控制台终端打印该窗口控件分别调用frameGeometry()和Geometry()返回的QRect对象。

可以看到在构造函数中得到的窗口Widget的QRect是一样的,但是点击按钮后,在槽函数中打印出的QRect不一样。这是因为在构造函数中窗口Widget刚刚创建出来,还没有挂到对象树上,也就没有frame window,调用槽函数时窗口Widget已经挂在了对象树上因此就有了frame window。

四、windowTiltle

设置窗口标题。

windowTitle():获取窗口控件的标题。

setWindowTitle(const QString& title):修改窗口控件的标题。

注意:如果是窗口Widget调用才会有效果,其他子Widget(窗口中的其他控件)这个操作无任何效果。

五、windowIcon

设置窗口图标。

windowIcon():获取控件的窗口图标,返回QIcon类型对象。

setwindowIcon(const QIcon& icon):设置控件的窗口图标。

例子:

更改窗口Widget的图标为c盘中的一个笑脸图片,创建一个Icon类型的对象里面是图片的路径,然后调用setWindowIcon。

上面这种是采用绝对路径的方式定位图片资源的。

qrc机制

qrc解决了两个问题:

1.确保开发者的图片资源所在的路径在用户机器上存在。

2.确保图片资源不会被用户弄丢。

qt项目引入一个qrc文件,该文件是一种XML格式的资源配置文件,该文件记录了qt程序中需要用到的资源及资源名称,在qt编译项目的时候就会根据qrc中所记录的资源,然后把需要用到的资源的二进制数据转换成C++代码,最终编译到exe可执行文件中,从而使依赖的资源变得与路径无关。

注意:路径名和文件名中避免有汉字或特殊符号。向qrc文件中导入资源文件时,必须确保要被导入得资源文件必须在qrc文件得同级目录,或者同级目录中得子目录里。

创建qrc文件

1.在一个已经创建好得qt项目中点击新建文件或项目,然后选择Qt Resource File

2.自定义qrc文件名

 3.添加qt寻找资源时的虚拟前缀(其实是一个虚拟目录)

该前缀可以自己定义,但一般都是一个正斜杠/

4.向qrc文件中导入资源文件

例子:

点击按钮一时窗口图标变为smallface,点击按钮二窗口图标变为listenmusic。

注意:qt项目中访问该项目中的qrc文件中的资源时写法必须按照以下格式:

1、使用 : 作为开头,表示从qrc中读取文件。

2、 : 后根qrc中的添加的前缀(Prefix),然后前缀后面就是要访问的qrc中的资源名。


http://www.ppmy.cn/server/151234.html

相关文章

Python数据分析(OpenCV视频处理)

处理视频我们引入的还是numpy 和 OpenCV 的包 引入方式如下: import numpy as np import cv2 我们使用OpenCV来加载本地视频,参数就是你视频的路径就可以 #加载视频 cap cv2.VideoCapture(./1.mp4) 下面我们进行读取视频 #读取视频 flag,frame cap.re…

第六章:反射+设计模式

一、反射 1. 反射 (Reflection) :允许在程序运行状态中,可以获取任意类中的属性和方法,并且可以操作任意对象内部的属 性和方法,这种动态获取类的信息及动态操作对象的属性和方法对应的机制称为反射机制。 2. 类对象 和 类的…

Android通过okhttp下载文件(本文案例 下载mp4到本地,并更新到相册)

使用步骤分为两步 第一步导入 okhttp3 依赖 第二步调用本文提供的 utils 第一步这里不做说明了,直接提供第二步复制即用 DownloadUtil 中 download 为下载文件 参数说明 这里主要看你把 destFileName 下载文件名称定义为什么后缀,比如我定义为 .mp4 下…

Linux安装部署Redis(超级详细)

前言 网上搜索了一筐如何在Linux下安装部署Redis的文章,各种文章混搭在一起勉强安装成功了。自己也记录下,方便后续安装时候有个借鉴之处。 Redis版本 5.0.4服务器版本 Linux CentOS 7.6 64位 下载Redis 进入官网找到下载地址 https://redis.io/down…

Java算法OJ(7)随机快速排序

目录 1.前言 2.正文 1. 快速排序的基本原理 2. 随机快速排序的改进 3. 随机快速排序的步骤 3.小结 1.前言 哈喽大家好吖,今儿给大家带来算法—随机快速排序相关知识点,废话不多说让我们开始。 2.正文 在了解随机快排之前,先了解一下…

<数据集>输电线塔杂物识别数据集<目标检测>

数据集下载链接 <数据集>输电线塔杂物识别数据集<目标检测>https://download.csdn.net/download/qq_53332949/90141102数据集格式:VOCYOLO格式 图片数量:1099张 标注数量(xml文件个数):1099 …

CTFHub-ssrf

技能树--Web--SSRF 内网访问 开启题目 尝试访问位于127.0.0.1的flag.php吧 进入环境 根据提示输入即可 127.0.0.1/flag.php 伪协议读取文件 开启题目 尝试去读取一下Web目录下的flag.php吧 进入环境,根据提示输入 file:///var/www/html/flag.php 鼠标右键查看…

Hadoop学习

0 小结 一、Hadoop入门 1、常用端口号hadoop3.x HDFS NameNode 内部通常端口:8020/9000/9820HDFS NameNode 对用户的查询端口:9870Yarn查看任务运行情况的:8088历史服务器:19888hadoop2.x HDFS NameNode 内部通常端口&#xff1…