详细介绍:QT常用控件(1)

news/2025/10/7 11:12:23/文章来源:https://www.cnblogs.com/lxjshuju/p/19128274

控件是构成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.mzph.cn/news/930334.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站制作素材绿色商城网站模板

多参数方法的问题相信很多人曾经都写过多参数的构造方法,就像下面示例的代码。当想要创建一个给全部属性赋值的实例的时候,就会利用这个多参数的构造方法。但是,当类的属性特别多的时候,你还会这么写吗?如果你写了一个…

Generate First, Then Sample: Enhancing Fake News Detection with LLM-Augmented Reinforced Sampling

论文阅读1. 任务 如何提高假新闻检测的效果,特别是针对假新闻本身的检测能力 2. 研究背景与问题提出:假新闻指包含虚假信息的新闻,其在社交媒体上的传播对公共卫生、政治等关键社会议题构成严重威胁。现有假新闻检测…

开发电商网站多少钱刷赞网站推广软件

文末下载上传环境源码客户端js检查一般都是在网页上写一段javascript脚本,校验上传文件的后缀名,有白名单形式也有黑名单形式。查看源代码可以看到有如下代码对上传文件类型进行了限制:我们可以看到对上传文件类型进行了限制。绕过方法1.我们…

手机网站网站开发流程开发软件开发

目录 一、常见的压缩包的扩展名 二、常见的压缩和解压指令 1、tar 2、tar gzip(.tar.gz) (或 .tgz) 3、tar bzip2(.tar.bz2) 4、zip 5、gzip 6、bzip2 7、xz 8、rar 9、7z 三、安装解压工具 一、常见的压缩包的扩展…

数据大屏

数据大屏 <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1…

K8S上采用helm部署 Prometheus + Grafana

K8S上采用helm部署 Prometheus + Grafanapre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "M…

AI元人文的硅基基石体系:EPU+VPU+WBUC+WAUC深度解析——声明Ai解析

AI元人文的硅基基石体系:EPU+VPU+WBUC+WAUC深度解析 一、引言:硅基生命的人文基因 在2025年阿里云栖大会上,"云智一体,碳硅共生"的主题引发了人们对未来智能形态的深刻思考。随着人工智能技术的迅猛发展…

做熊猫tv网站的目的互联网电子商务网站开发技术

前言 踩着前人的肩膀&#xff0c;努力前行。参考了很多前人的文章。 1.变量声明const和let es6之前声明变量只能用var&#xff0c;var的特点是无论声明在何处&#xff0c;都会被视为声明在函数的最顶部(不在函数内即在全局作用域的最顶部) function test(){if(false){var name …

优秀网站建设哪家专业网页打不开用什么浏览器

引子 网络层能够被分解为两个相互作用的部分&#xff1a; 数据平面和控制平面。 网络层概述 路由器具有截断的协议栈&#xff0c;即没有网络层以上的部分。 如下图所示&#xff0c;是一个简单网络&#xff1a; 转发和路由选择&#xff1a;数据平面和控制平面 网络层的作用…

做画册去什么网站找素材网站建设新闻咨询

官方文档 在前面 文章目录 uboot常见命令学习环境变量网络控制台uboot标准启动其他 升级uboot或内核bin和uimg以及booti和bootm的区别制作uImage更换内核更换uboot后续计划 uboot常见命令学习 环境变量 Environment Variables环境变量 autostart 如果值为yes&#xff0c;则会…

电脑做网站服务器需要什么软件手机网站 侧边栏导航

&#x1f451;专栏内容&#xff1a;Java⛪个人主页&#xff1a;子夜的星的主页&#x1f495;座右铭&#xff1a;前路未远&#xff0c;步履不停 目录 一、泛型1、什么是泛型2、泛型的语法 二、泛型类的使用1、泛型类的语法2、泛型如何编译的2.1、擦除机制2.2、为什么不能实例化泛…

详细介绍:VSCode+Cline 安装配置及使用说明

详细介绍:VSCode+Cline 安装配置及使用说明2025-10-07 10:44 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: bl…

淮安软件园哪家做网站建设网站需要有什么特色

当我们谈论编程中的数据结构时&#xff0c;顺序容器是不可忽视的一个重要概念。顺序容器是一种能够按照元素添加的顺序来存储和检索数据的数据结构。它们提供了简单而直观的方式来组织和管理数据&#xff0c;为程序员提供了灵活性和性能的平衡。 Qt 中提供了丰富的容器类&…

看手机的网站叫什么建筑公司经营范围大全

手机从开发出来到现在&#xff0c;已经换了很多代了&#xff0c;从大哥大&#xff0c;小灵通&#xff0c;到诺基亚到山寨机到苹果到华为&#xff0c;几十年过去了。手机从奢侈品一下飞去每个人手里&#xff0c;反正我手机有手机已经快10年了&#xff0c;所以我相信每个人对自己…

有关网站建设的知识招标网站大全

最近接触到一些新人&#xff0c;是真正的网络新人&#xff0c;慢慢理解了新人的困惑。 对于新人&#xff0c;每天获取的信息五花八门&#xff0c;这是好的也是极其不好的。因为他们不知道如何筛选&#xff0c;到底适不适合自己去做。 我一直在劝大家去做一些内容创造性的事情…

题解:P4779 【模板】单源最短路径(标准版)

题目传送门 算法分析 本题要求计算单源最短路径,并且边权非负,适合使用Dijkstra 算法。Dijkstra 算法是一种贪心算法,用于计算带权有向图或无向图中单个源节点到所有其他节点的最短路径。 为什么选择 Dijkstra 算法…

网关配置

sy //进入配置undo in en //关闭信息中心 in en //打开信息中心int g0/0/0 //进入接口 ip add xxx.xxx yyy.yyy//配置该接口的ip及子网掩码原本左右2个不是同网段的设备 无法联通 通过网关配置后 网关作为中间人联…

湖南服装网站建设创意做美食视频网站

文章目录 代码实现参考 代码实现 本文实现 ResNet原论文 Deep Residual Learning for Image Recognition 中的50层&#xff0c;101层和152层残差连接。 代码中使用基础残差块这个概念&#xff0c;这里的基础残差块指的是上图中红色矩形圈出的内容&#xff1a;从上到下分别使用…

北京微网站建设公司广州专业做继承案件律师

11月3日-5日&#xff0c;由中国开源软件推进联盟 PostgreSQL 分会主办的中国 PostgreSQL 数据库生态大会在北京中科院软件所隆重举行。大会以”极速进化融合新生”为主题&#xff0c;从线下会场和线上直播两种方式展开&#xff0c;邀请了数十位院士、教授、高管和社群专家&…

高频感应钎焊在制冷行业的应用与优势:高效、绿色、智能的焊接革命!

在追求“双碳”目标与智能制造的时代浪潮下,制冷行业正经历一场静悄悄的技术革命。其中,高频感应钎焊(High-Frequency Induction Brazing)作为一项先进连接工艺,正以其高效、安全、精准的特性,全面取代传统火焰钎…