QT常用控件(1)

article/2025/6/7 23:45:16

控件是构成QT的基础元素,例如Qwidget也是一个控件,提供了一个‘空’的矩形,我们可以往里面添加内容和处理用户输入,例如:按钮(QpushButton),基础显示控件(Lable),鼠标点击等。快速利用控件开发出需求的界面的重要一步就是学习QT控件的内容,接下来我们开始学习常用控件QWidget及其属性吧。

一,QWidget

QWidget是所有控件间接或者直接的父类,提供了一个空的矩形,我们可以通过对这个矩形的内容以及本身进行开发,实现我们需要的界面,说了这么多,我们先见一下QT的Qwidget界面吧。

没错,这个我们运行后每次都出现的就是Qwidget界面,其他控件都是在QWidget控件上进行开发。点击之后可以在ui界面进行查看,Qwidget的属性有很多,我们介绍和学习一些常用的属性

1,控件启用

enabled:这个代表控件是否启用,如果不启用那么控件就是灰色的,而且我们无法对其进行任何操作,接下来我们看看代码和效果,因为QWidget被禁用了,所有基于其添加的控件自然也无法使用,当然我们也可以通过右侧UI界面的属性进行勾选设置。

可能会有细心的朋友发现很多时候UI设置的属性和代码设置的属性不一样,那么哪一个优先级高呢?取决于widget.cpp里面的构造函数

我们也可以通过Isenable()和setEnable获取,改变控件是否启用的属性。

2,控件位置

在上面的控件属性图里面相信我们也看到了下面这个

这个就是坐标与大小属性,前面两个是x,y坐标(横坐标向左变大,纵坐标向下增大),800x600就是宽和高。那我们该怎么获取这个属性,修改这个属性呢?

首先介绍一下geometry函数

这个函数可以获取控件的位置坐标,以及控件大小长宽,位置坐标的Y轴是向下增长的。0点在左上角,以widget控件为参考系,单位是像素点。

那我们该如何设置控件的坐标呢?我们可以查看qt离线文档

我们可以使用QRectF接收控件坐标和设置控件坐标。QRectF和QRrct可以相互显示和隐式转换,区别在于QRect存储是整形,QRect存储的是浮点数。接下来我们简单使用一下吧

//修改位置前代码    
QPushButton* my_button=new QPushButton(this);my_button->setText("肖涵坤");

//使用按钮控件修改后
void Widget::MoveButton(){
//my_button被我移到widget里面变成了成员变量,方便获取QRect rect=this->my_button->geometry();//注意X,Y是起始位置,width和height是右下角位置,//单独调整X和Y,width和height不会改变,导致控件变小,xy超过width和height时控件直接大小清零不显示了//原因是单独设置X,Y时,width和height坐标不变//下面的效果实际上是平移,下面一行代码设置效果等同rect.setRect(rect.x()+100,rect.y()+100,rect.width(),rect.height());
//    rect.setX(rect.x()+100);
//    rect.setY(rect.y()+100);
//    rect.setWidth(rect.width()+100);
//    rect.setHeight(rect.height()+100);this->my_button->setGeometry(rect);
}

效果:每次点击按钮都会将按钮下右下角移动根号下100*100/2个像素点

二,windowIcon

1,控件作用

windowIcon是用来设置widget窗口图标的,类似于下面谷歌的图标

我们设置窗口,需要先指定一个图片路径作为窗口图标,我们这里先简单的试一下

    QIcon icon("D:\\HuaweiMoveData\\Users\\86182\\Desktop\\学校作业\\love.jpg");this->setWindowIcon(icon);

效果:

我们可以看到两个窗口图片都改变了,但是有一个问题,我们的图片是存储在本地的桌面,如果项目换了一个坏境或者图片丢失这个图片就无法访问会报错了,那我们该怎么办,这就是我接下来要讲的。

2,qrc机制

这个机制原理很简单,实际上就是将文件存储在QT项目的工程目录下面,qrc机制负责帮我们管理这些文件。

qrc机制qrc ⽂件是⼀种XML格式的资源配置⽂件, 它⽤XML记录硬盘上的⽂件和对应的随意指定的资源名称. 应⽤程序通过资源名称来访问这些资源。它可以讲图片等第三方资源以二进制形式写入到可执行文件里面,即使资源丢失也不会影响展示效果,达到了不依赖路径的效果。那qrc如何使用呢?

1,选择新建文件

2,设置qrc名字

3,选择需要qrc的项目

4,添加qrc文件,路径设为/,//可以理解为目录

5,选择添加文件

6,因为文件不在qrc目录及子目录下,会自动复制我们需要手动将文件复制到工程目录下

7,选择保存即可看到这个文件

8,在代码里面使用,注意之前选择的/就是目录

qrc优点:代码稳定,不会出现资源丢失的情况

缺点:如果资源太大,exe文件体积会很大,编译时因为要将大量的资源编译成二进制需要消耗大量时间。

三,windowOpacity

这个控件是设置控件的透明度的,范围是0-1,透明度由小到大。大于1的效果和1差不多,负数效果和0一样,我们可以看一下0.5透明度效果。

四,cursor

这个的意义是鼠标停留时光标的形状,我们可以通过setCusor设置鼠标停留在控件上面的形状。

下面是qt官方提供的光标形状

很抱歉,暂时无法看效果,因为光标截图的时候切走了,不够大家可以自己试试。

    QCursor cursor(Qt::WaitCursor);this->setCursor(cursor);

有时候我们想用本地下载的图片,如唱跳rap打篮球,我们该怎么办呢?我们可以使用下面的构造函数设置,hotX和hotY代表鼠标点击在光标的的那个位置,零点在图片的左上角

还有我们设置的图片可能需要调整大小,我们可以通过下面这个函数调整

这样子我们就实现了自定义鼠标

    QPixmap pip(":/love.jpg");pip=pip.scaled(20,20);QCursor cursor(pip,10,10);this->setCursor(cursor);

五,字体设置

我们可以简单的使用一下

    QFont font("微软雅黑",5,50,true);ui->label->setFont(font);

接下来我们介绍一下里面常用属性

Bold:是否加粗
Capitalization:文本大小写规则
Family:字体样式
pointSize:字体大小,数字越大字体越大
weight:字体的粗细,范围【0-99】
italic:是否倾斜
underline:下划线
strikeOut:删除线

六,toolTip

这个控件的作用是当鼠标悬停在控件上面的时候会有提示,效果如下图

相信这么简单的使用方法就不需要多介绍了,直接将想要提示的文本写入里面就可以了,例如我上面的文本就是设置成了这是一个Label类型

七,foucsPolicy

这个控件的作用和名字一样设置焦点的策略。首先焦点是什么呢?焦点就是能选择这个元素,就想玩电子版象棋,当你点到想要移动的棋子时,它被选中了,就是聚焦了,那焦点可以通过哪几种方法选中呢?一般是tap键,鼠标点击这两种方式。

这上面介绍了五种聚焦模式,也就是选中,上面的value是2的次方,原理类似于位图


Qt::TabFocus    按tap键可以选中
Qt::ClickFocus    通过鼠标点击
Qt::StrongFocus  可以通过所以方式选中
Qt::WheelFocus    可以通过鼠标滚动选中
Qt::NoFocus    无法选中

八,styleSheet

qt里面支持向前端界面一样,使用CSS格式设置属性,就是下面这种形式,不过qt支持的属性比较少称为QSS,大家可能通过离线文档查看每个具体控件支持的属性

上面的代码其实有问题,因为qt的setStyleSheet是进行覆盖设置的,那我们怎么进行追加呢?答案是先使用styleSheet获取原先的QSS,再进行字符串追加实现效果叠加。

注:记得加分号分割哦

九,通过UI界面实现上述效果

qt不仅仅可以通过代码实现控件属性设置,也可以通过UI界面设置,大家可以试试,会了代码设置基本上使用UI界面没有问题


http://www.hkcw.cn/article/TfdFMiZUsX.shtml

相关文章

Linux系统-基本指令(5)

文章目录 mv 指令cat 指令(查看小文件)知识点(简单阐述日志)more 和 less 指令(查看大文件)head 和 tail 指令(跟查看文件有关)知识点(管道)时间相关的指令&a…

C 语言学习笔记(预处理和库文件)

内容提要 预处理库文件 预处理 预处理编译汇编链接 什么是预处理 预处理就是在源文件(.c文件)编译之前,所进行的一部分预备操作,这部分操作是由预处理器(预处理程序)自动完成。当源文件在编译时&#x…

谷歌地图高清卫星地图软件(Google Earth)v6.0.3.2197 中文版 - 前端工具导航

谷歌地图6.0Google Earth是一款谷歌地图高清卫星地图软件,能够实时监测并提供最准确的地图信息,地球上的任意一块地区都能够准确定位并放大查看,覆盖范围广,精度高,非常实用! 谷歌卫星高清地图 下载链接&a…

全球治理指标数据(1996-2023)

1945 全球治理指标(WGI)(1996-2023) 数据简介 全球治理指标(WGI)是一个由世界银行开发的综合性数据库,通过政治稳定、政府效能、监管质量、法治水平、腐败控制和公民话语权六个维度系统衡量全球各国的治理…

Blocked aria-hidden on an element because its descendant retained focus.

问题出在 Element UI 的 el-table 组件 全选功能上,这是一个常见的无障碍(a11y)问题。这个错误提示与网页 accessibility(无障碍访问)相关,涉及 aria-hidden 属性的不当使用。 问题原因分析 1. Element U…

2025 年人脸识别技术应用备案政策已落地

在 AI 技术深度渗透的当下,人脸识别作为重要的生物识别技术,已广泛应用于安防、金融、零售等多领域。但随之而来的个人信息安全风险也备受关注。2025 年 6 月 1 日起《人脸识别技术应用安全管理办法》正式实施,企业需重视人脸识别技术应用备案…

01电气设计-380V强电部分设计

目标:在电气设计过程中380V的强电部分,一般来自与工厂,一般为3相5线制的380V,下面的应用场景是当我的用电设备(电机,冷水机,控制器,驱动器,激光器等等)总功率…

文件批量重命名

mv只支持单个文件命名 批量重命名用rename 例子: #touch命令批量创建空文件,文件10-15 touch file{10..15}.txt批量重命名 # 批量重命名,file10-15重命名为test10-15 #这里file1? 匹配的是单个字符。比如10,11等 rename file1 test1 file1…

ES的开始

ES作用 在海量数据中,执行搜索功能,使用mysql,效率过低, 如果关键字输入不准确,一样可以搜索到想要的数据 讲搜索关键字,以红色字体展示 ES介绍 ES是基于java语言并且基于Lucene编写的搜索引擎框架&#x…

【论文解读】ReAct:从思考脱离行动, 到行动反馈思考

认识从实践开始,经过实践得到了理论的认识,还须再回到实践去。 ——《实践论》,毛泽东 1st author: About – Shunyu Yao – 姚顺雨 paper [2210.03629] ReAct: Synergizing Reasoning and Acting in Language ModelsReAct: Synergizing Reasoning and…

AXURE-动态面板

1.概述 动态面板原件,容器类的原件一个动态面板可以有多种状态 同一时刻只展示一个状态 默认展示第一个状态 主要用于多个状态的切换可拖动 1.1 创建 将原件库中的“动态面板”原件,直接拖动到工作区中,创建空白动态面板将页面中原件选中…

AI地面垃圾检测算法智能分析网关V4打造城市/公园/校园等场景环保卫生监管解决方案

一、方案背景​ 在城市管理与场所运营中,地面垃圾的及时清理是环境品质的重要指标。传统人工巡检效率低、成本高,存在明显滞后性,难以满足现代环境管理需求。随着人工智能与计算机视觉技术发展,智能化管理成为趋势。AI智能分析网…

帝国CMS QQ登录插件最新版 获取QQ头像和QQ昵称

帝国CMS QQ登录插件最新版 获取QQ头像和QQ昵称 QQ一键登录,免邮箱 随机密码 获取QQ头像 获取QQ昵称 直接下载上传到帝国CMS:/e/memberconnect UTF-8版本 GBK的自己转换 QQ登录后的默认密码 是随机的邮箱账号前面的随机6个字母和数字 【下图字母数…

Kafka 的优势是什么?

Kafka 作为分布式流处理平台的核心组件,其设计哲学围绕高吞吐、低延迟、高可扩展性展开,在实时数据管道和大数据生态中具有不可替代的地位。 一、超高吞吐量与低延迟 1. 磁盘顺序 I/O 优化 突破磁盘瓶颈:Kafka 将消息持久化到磁盘&#xff…

低谷才是出成绩

有些朋友说我现在是高光,其实不然 之所以有这样的误解,是我个人的简历上是不断增加名誉。这点属实,看看我的词条:https://www.modb.pro/wiki/4245的确如此。但是其实也有误会。事情可以反过来看。因为,如果做技术的在…

Bash shell四则运算

文章目录 四则运算1. ‌expr 命令‌2. ‌$(( )) 表达式(推荐)‌3. ‌$[ ] 表达式(已弃用)‌4. ‌let 命令‌小数运算i 和 i 区别 四则运算 算术运算: - * / %(取模,求余数) Bash sh…

Windows + CPU也能跑时序预测:TSLib框架快速上手与踩坑避雷

在时序预测领域,选择一个成熟的框架往往能让我们事半功倍。最近接手了一个紧急的时序预测项目,经过一番调研后,我选择了TSLib(Time-Series-Library)这个优秀的开源框架来快速搭建整个预测流程。 由于开发环境限制在Windows平台且没有GPU支持,整个部署过程还是遇到了一些…

多模态大语言模型arxiv论文略读(105)

UnifiedMLLM: Enabling Unified Representation for Multi-modal Multi-tasks With Large Language Model ➡️ 论文标题:UnifiedMLLM: Enabling Unified Representation for Multi-modal Multi-tasks With Large Language Model ➡️ 论文作者:Zhaowei…

set map数据结构

#include <set> #include <iostream> using namespace std;int main() {// 设置控制台输出编码为UTF-8system("chcp 65001");set<int> s1; // 创建一个整数集合// 插入元素s1.insert(5);s1.insert(3);s1.insert(7);s1.insert(1);s1.insert(9);//默…

云开发实现新闻列表小程序

新闻列表小程序需要两个页面即新闻列表页及新闻发布页&#xff0c;这两个页面需要以tabBar的形式展示&#xff0c;单击tab图标可以进行页面相互切换。本项目中是分别在cloudfunctions中创建一个名为“submit”的云函数&#xff0c;功能为向小程序端发布信息&#xff0c;在pages…