QT:控件属性及常用控件(1)------核心控件及属性
一个图形化界面上的内容,不需要我们直接从零去实现
QT中已经提供了很多的内置控件:
按钮,文本框,单选按钮,复选按钮,下拉框等等。。。。。
文章目录
- 1.常用控件属性
- 1.1 enabled
- 1.2 geometry
- 1.2.1 geometry示例:调整目标的大小和位置
- 1.2.2 geometry示例:无法拒绝的表白(不要轻易尝试使用)
- 1.3 window frame窗口框架
- 1.4 windowTitle
- 1.5 windowIcon
- 1.6 windowOpacity
- 1.7 cursor
- QPixmap(可以通过对象表示图片,在cursor里使用到这个)
- 1.8 font
- 1.9 toolTip
- 1.10 focusPolicy
- 1.11 styleSheet
- 2.qrc文件
- 3.在styleSheet中颜色的应用及知识
1.常用控件属性
1.1 enabled
当然也可以用两个按钮,用一个按钮来控制另一个按钮的enable状态
void Widget::on_pushButton_clicked()
{qDebug()<<"执行槽函数";
}void Widget::on_pushButton_2_clicked()
{bool enable=ui->pushButton->isEnabled();if(enable){ui->pushButton->setEnabled(false);}else{ui->pushButton->setEnabled(true);}
}
1.2 geometry
当前控件的位置和尺寸
其常用的API如下:
API | 说明 |
---|---|
geometry() | 获取到控件的位置和尺⼨. 返回结果是⼀个 QRect, 包含了 x, y, width, height. 其中 x, y 是左上⻆的坐标 |
setGeometry(QRect) | 获取到控件的位置和尺⼨. 返回结果是⼀个 QRect![]() |
setGeometry(int x, int y,int width, int height) | 获取到控件的位置和尺⼨. 包含了 x, y, width, height. 其中 x, y 是左上⻆的坐标 |
1.2.1 geometry示例:调整目标的大小和位置
下来我们来写代码完成点击上下左右四个按钮,来调整一个目标的大小和位置:
1.2.2 geometry示例:无法拒绝的表白(不要轻易尝试使用)
添加几个控件,给女生表白,当女生点接受表白就成功,当女生点拒绝,那么拒绝就到到处乱跑!
void Widget::on_pushButton_accept_clicked()
{ui->lineEdit->setText("爱死你了宝贝,mua~亲一个!");
}void Widget::on_pushButton_reject_clicked()//点击,鼠标点了之后松开生效
{
// int width=this->geometry().width();
// int height=this->geometry().height();
// //获取width和height并取模,保证其位置不会超出窗口范围!
// int x=rand()%width;
// int y=rand()%height;
// ui->pushButton_reject->move(x,y);
}void Widget::on_pushButton_reject_pressed()//点击,点下鼠标就生效,不需要松开
{int width=this->geometry().width();int height=this->geometry().height();//获取width和height并取模,保证其位置不会超出窗口范围!int x=rand()%width;int y=rand()%height;ui->pushButton_reject->move(x,y);
}
1.3 window frame窗口框架
frame就是最上面的那个窄窄的小窗口,(关闭,最小化)那个!!
相关主要的API:
API | 说明 |
---|---|
frameGeometry() | 返回 QRect 对象. QRect 相当于 QPoint 和 QSize 的结合体. 可以获取 x, y,width, size.计算时包含 window frame 对象 |
geometry() | 返回 QRect 对象. QRect 相当于 QPoint 和 QSize 的结合体. 可以获取 x, y,width, size.计算时不包含 window frame 对象. |
setGeometry() | 直接设置窗⼝的位置和尺⼨. 可以设置 x, y, width, height, 或者 QRect 对象.计算时不包含 window frame 对象. |
1.4 windowTitle
当前windowsTitle属性,从属于QWidget。
QWidget是一个广泛的概念,windowTitle属性,只能针对顶层窗口这样的QWidget才有效。
常用API:
API | 说明 |
---|---|
windowTitle() | 获取到控件的窗⼝标题 |
setWindowTitle(constQString& title) | 设置控件的窗⼝标题. |
1.5 windowIcon
表示一个窗口的图标
但是用这种绝对路径不好,一般都是用相对路径。
当然,我这里用的是C盘下的文件,那么如果开发好了用户使用的时候,用户电脑没有C盘下的这个文件(这时候相对路径和绝对路径都不好使),那么就会出大问题,所有需要引入qrc机制!!
当然还有一种qrc机制:
给QT项目引入一个额外的xml文件(后缀名为.qrc)
在这个xml中需要把使用的图片资源导入,并在xml中记录
QT在编译项目的时候,会根据qrc中描述的图片信息,找到图片中的内容,并且提取出图片的二进制数据,把这些数据转换成C++代码,最终编译在.exe文件中。
当然这个资源不能太大,否则qrc也无能为力!!!
常用API:
API | 说明 |
---|---|
windowIcon() | 获取到控件的窗⼝图标. 返回 QIcon 对象 |
setWindowIcon(const QIcon& icon) | 设置控件的窗⼝图标. |
1.6 windowOpacity
也就是一个半透明效果!!
常用API:
API | 说明 |
---|---|
windowOpacity() | 获取到控件的不透明数值. 返回 float, 取值为 0.0 -> 1.0 其中 0.0 表⽰全透明, 1.0 表⽰完全不透明. |
setWindowOpacity(float n) | 设置控件的不透明数值. |
if的条件判断这里也可以不加,因为setWindowOpacity内部会进行判定,但是为了编程的规范性,还是建议加上判定条件!
1.7 cursor
改变鼠标光标的样式
比如这样我们常见的鼠标样式。
常用API:(Widget级别,同一个界面中,不同控件可以设置成不同的光标)
API | 说明 |
---|---|
cursor() | 获取到当前widget的cursor属性,返回QCursor对象.当⿏标悬停在该widget上时,就会显⽰出对应的形状. |
setCursor(const QCursor& cursor) | 设置该widget光标的形状.仅在⿏标停留在该widget上时⽣效. |
QGuiApplication::setOverrideCursor(const QCursor&cursor) | 设置全局光标(程序内的全局,非系统级别)的形状.对整个程序中的所有widget都会⽣效.覆盖上⾯的setCursor设置的内容. |
在ui界面,可以如下所示,直接设置,可以对窗口进行设置,也可以对某个控件进行设置!
也可以像下面一样用代码编写,设置为WaitCursor就是我们常见的转圈圈那个
当然,QT内置的cursor有很多,如下:
QPixmap(可以通过对象表示图片,在cursor里使用到这个)
这些内置的光标都是非常传统(换句话说就是太古老了),那么怎么样可以用更加现代化的光标呢?
QT允许我们通过自定义的图片来设置光标!!!
阿里巴巴 矢量图标库可以免费下载大量的鼠标图标,我们去获取!!
1.8 font
一组属性的集合,表示和字体相关的一系列属性
常用API:
API | 说明 |
---|---|
font() | 获取当前widget的字体信息.返回QFont对象. |
setFont(const QFont& font) | 设置当前widget的字体信息. |
属性
family | 字体家族.⽐如"楷体",“宋体”,"微软雅⿊"等. |
---|---|
pointSize | 字体⼤⼩ |
weight | 字体粗细.以数值⽅式表⽰粗细程度取值范围为[0,99],数值越⼤,越粗. |
bold | 是否加粗.设置为true,相当于weight为75.设置为false相当于weight 为50. |
italic | 是否倾斜 |
underline | 是否带有下划线 |
strikeOut | 是是否带有删除线 |
1.9 toolTip
一个GUI程序,界面比较复杂,按钮啥的很多
当你吧鼠标悬停在某个控件上的时候,就能弹出一个提示,这就是toolTip,比如:
常用API:
API | 说明 |
---|---|
setToolTip | 设置toolTip.,⿏标悬停在该widget上时会有提⽰说明. |
setToolTipDuring | 设置toolTip提⽰的时间.单位ms.,时间到后toolTip⾃动消失. |
1.10 focusPolicy
设置控件获取到焦点的策略.⽐如某个控件能否⽤⿏标选中或者能否通过tab键选中.
所谓"焦点",指的就是能选中这个元素.接下来的操作(⽐如键盘操作),就都是针对该焦点元素进⾏的了.这个对于输⼊框,单选框,复选框等控件⾮常有⽤的.(最简单的就是百度搜索框,点击才能输入文字)
常用API:
API | 说明 |
---|---|
focusPolicy() | 获取该widget的focusPolicy,返回Qt::FocusPolicy |
setFocusPolicy(Qt::FocusPolicy policy) | 设置widget的focusPolicy. |
1.11 styleSheet
通过CSS设置widget的样式.
CSS 本⾝属于⽹⻚前端技术.主要就是⽤来描述界⾯的样式.
所谓"样式",包括不限于⼤⼩,位置,颜⾊,间距,字体,背景,边框等.
2.qrc文件
在QT项目进行编译的时候,这个cpp文件就被一起编译到exe中了,当exe程序运行的时候,上述图片的数据就被加载到内存中。就不需要像windowIcon一样还要考虑图片的位置了!!!!
3.在styleSheet中颜色的应用及知识
this->setStyleSheet("background-color:rgb(240,240,240)");//rgb方式
this->setStyleSheet("background-color:white");//传统方式
相关文章:

QT:控件属性及常用控件(1)------核心控件及属性
一个图形化界面上的内容,不需要我们直接从零去实现 QT中已经提供了很多的内置控件: 按钮,文本框,单选按钮,复选按钮,下拉框等等。。。。。 文章目录 1.常用控件属性1.1 enabled1.2 geometry1.2.1 geometry…...

使用 Python结合ffmpeg 实现单线程和多线程推流
一、引言 在本文中,我们将详细介绍如何使用 Python 进行视频的推流操作。我们将通过两个不同的实现方式,即单线程推流和多线程推流,来展示如何利用 cv2(OpenCV)和 subprocess 等库将视频帧推送到指定的 RTMP 地址。这…...

Linux一些问题
修改YUM源 Centos7将yum源更换为国内源保姆级教程_centos使用中科大源-CSDN博客 直接安装包,走链接也行 Index of /7.9.2009/os/x86_64/Packages 直接复制里面的安装包链接,在命令行直接 yum install https://vault.centos.org/7.9.2009/os/x86_64/Pa…...

在 Ubuntu 24.04.1 LTS | Python 3.12 环境下部署 Crypto 库
测试一些密码学方案需要用到 Crypto 库,网上教程大多针对 Windows 和 Python 3.10 或以下的环境,所以写下了这篇博文。 部署与使用 首先执行 su 输入密码进入超级用户,部署完 Python 3.12 环境后,执行以下命令进行安装ÿ…...

HTML5实现好看的二十四节气网页源码
HTML5实现好看的新年春节元旦网站源码 前言一、设计来源1.1 主界面1.2 关于我们界面1.3 春季节气界面1.4 夏季节气界面1.5 秋季节气界面1.6 冬季节气界面 二、效果和源码2.1 动态效果2.2 源代码 源码下载结束语 HTML5实现好看的二十四节气网页源码,春季节气…...

C++(9)—类和对象(上) ②实例化
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、实例化概念二、对象大小 1.对象存储2.内存对齐规则总结 前言 提示:以下是本篇文章正文内容,下面案例可供参考 一、实例化概念 • …...

Effective C++读书笔记——item2(const,enum,inlines取代#define)
关于用常量取代 #define 的总体原则 在编程中,应尽量减少预处理器(特别是 #define)的使用,可通过合适的替代方式来避免 #define 带来的诸多问题,虽然不能完全消除预处理器相关指令(如 #include、#ifdef/#i…...

如何科学评估与选择新版本 Python 编程语言和工具
文章目录 摘要引言评估新版本的关键因素适用性评估成本与收益分析 新版本功能的实际应用示例代码模块详细解析示例代码模块代码模块解析实际应用场景如何运行与配图 QA环节总结参考资料 摘要 随着技术的快速发展,编程语言和软件工具不断推出新版本,带来…...

第十届“挑战杯”大学生课外学术科技作品竞赛解析及资料
“挑战杯”被誉为大学生科技创新创业的“奥林匹克”盛会,它汇聚了来自各个学科、各个年级的精英人才。在这里,同学们带着对未知的好奇和对知识的渴望,组成一个个团队,向难题发起挑战。现在,第十届“挑战杯”大学生课外…...

【门铃工作原理】2021-12-25
缘由关于#门铃工作原理#的问题,如何解决?-嵌入式-CSDN问答 4 RST(复位)当此引脚接高电平时定时器工作,当此引脚接地时芯片复位,输出低电平。 按钮按下给电容器充电并相当与短路了R1改变了频率,按…...

Chain of Agents(COA):大型语言模型在长文本任务中的协作新范式
随着人工智能技术的飞速发展,大型语言模型(LLM)在自然语言处理领域的应用日益广泛。然而,LLM在处理长文本任务时仍面临诸多挑战。传统的解决方案,如截断输入上下文或使用基于检索增强生成(RAG)的…...

业务模型与UI设计
业务数据模型的设计、UI设计这应该是程序设计中不可缺少的部分。做程序设计的前提应该先把这两块设计好,那么,来一个实际案例,看看这2块的内容。 汽车保养记录业务模型与UI设计: 一、【车辆清单】 记录车辆相关的数据࿰…...

Apache SeaTunnel深度优化:CSV字段分割能力的增强
Apache SeaTunnel深度优化:CSV字段分割能力的增强 一、Apache SeaTunnel与CSV处理 1.1 Apache SeaTunnel简介 Apache SeaTunnel(原名Waterdrop)是一个分布式、高性能的数据集成平台,支持海量数据的实时同步。它允许用户通过配置…...

免费下载 | 2024年具身大模型关键技术与应用报告
这份报告的核心内容涉及具身智能的关键技术与应用,主要包括以下几个方面: 具身智能的定义与重要性: 具身智能是基于物理身体进行感知和行动的智能系统,通过与环境的交互获取信息、理解问题、做出决策并实现行动,产生智…...

SSM-Spring-AOP
目录 1 AOP实现步骤(以前打印当前系统的时间为例) 2 AOP工作流程 3 AOP核心概念 4 AOP配置管理 4-1 AOP切入点表达式 4-1-1 语法格式 4-1-2 通配符 4-2 AOP通知类型 五种通知类型 AOP通知获取数据 获取参数 获取返回值 获取异常 总结 5 …...

jenkins修改端口以及开机自启
修改Jenkins端口 方式一:通过配置文件修改(以CentOS为例) 找到配置文件:在CentOS系统中,通常可以在/etc/sysconfig/jenkins文件中修改Jenkins的配置。如果没有这个文件,也可以查看/etc/default/jenkins&…...

按照人们阅读Excel习惯来格式化BigDecimal
1、环境/问题描述 使用springboot发送邮件(附件)的方式将月度报表发送给领导查阅,数据是准确的,领导基本满意。 就是对一些数字的格式化提出了改进建议,比如不要让大数字自动转为科学计数法、浮点数小数点后都是0就不要带出来,根…...

IDEA开发Java应用的初始化设置
一、插件安装 如下图所示: 1、Alibaba Java Coding Guidelines 2.1.1 阿里开发者规范,可以帮忙本地自动扫描出不符合开发者规范的代码,甚至是代码漏洞提示。 右击项目,选择《编码规约扫描》,可以进行本地代码规范扫…...

Java网络套接字
在Java的开发中,有一个很重要!很重要!很重要!的东西,叫做网络套接字,它被广泛的用来二次开发服务,比如大数据中台的服务链路调用等。 它的实现原理是依靠三次握手来完成通信的建立,…...

2025差旅平台推荐:一体化降本30%
医药行业因其高度专业化的特点,同时在运营过程中又极为依赖供应链和销售网络,因此差旅管理往往成为成本控制的重要环节。本期,我们以差旅平台分贝通签约伙伴——某知名药企为例,探讨企业如何通过差旅一体化管理,在全流…...

多个DataV遍历生成
DataV是数据可视化工具 与Echart类似 相对Echart图标边框 装饰可选官网DataV 安装 npm install kjgl77/datav-vue3main.ts import DataVVue3 from kjgl77/datav-vue3 app.use(DataVVue3)多个DataV遍历生成 Vue3viteDataV为例:<template><div w50rem h25rem flex&qu…...

mysql_real_connect的概念和使用案例
mysql_real_connect 是 MySQL C API 中的一个函数,用于建立一个到 MySQL 数据库服务器的连接。这个函数尝试建立一个连接,并根据提供的参数进行连接设置。 概念 以下是 mysql_real_connect 函数的基本概念: 函数原型:MYSQL *my…...

Python性能分析深度解析:从`cProfile`到`line_profiler`的优化之路
《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 在软件开发过程中,性能优化是提升应用质量和用户体验的关键环节。Python作为广泛应用的高级编程语言,其性能分析工具为开发者提供了强大的…...

Momentum Contrast for Unsupervised Visual Representation Learning论文笔记
文章目录 论文地址动量队列对比学习的infoNCE loss为什么需要动量编码器对比学习moco方法中的动量Encoder为什么不能与梯度Encoder完全相同为什么动量编码器和梯度编码器不能完全相同?总结: 我理解,正负样本应该经过同一个encoder,…...

用户界面的UML建模07
4.2 抽象表示层的行为(Abstract Presentation Behaviour) AbstractForm 类定义了一组如下所示的四种操作: showForm() , getData() , sendConfirmation() 和sendCancellation()。在该阶段的设计过程(desig…...

Node.js中使用Joi 和 express-joi-validation进行数据验证和校验
在进行项目开发的过程中,很多时候系统对用户输入的数据会进行严格校验的,通常我们会以“前端校验为辅,后端校验为主”的思想进行校验处理。 后端接口校验的时候,是只能一直使用if进行逻辑判断呢,还是有更加方便的方法…...

InstructGPT:基于人类反馈训练语言模型遵从指令的能力
大家读完觉得有意义记得关注和点赞!!! 大模型进化树,可以看到 InstructGPT 所处的年代和位置。来自 大语言模型(LLM)综述与实用指南(Amazon,2023) 目录 摘要 1 引言 …...

jrc水体分类对水体二值掩码修正
使用deepwatermap生成的水体二值掩码中有部分区域由于被云挡住无法识别,造成水体不连续是使用jrc离线数据进行修正,jrc数据下载连接如下:https://global-surface-water.appspot.com/download 选择指定区域的数据集合下载如图: 使…...

营销/CDP/MA/SCRM
最近几年面向企业用户的营销系统,cdp,ma,scrm等发展迅速,下面就简单介绍一下这些系统。 架构图 架构图中显示了CDP,MA,SCRM的核心功能,其实还有基础底座的功能。 比如统一登录,权限…...

免费CDN加速,零成本提升网站速度!
1. 起因 免备案的服务器要么在海外,要么是国内通过内网穿透才能访问,这两种方法好处是免费,坏处是延迟太高,有的地区延迟能到四五百甚至超时,这样明显是不行的。 所以需套一个cdn来加速,在2024年࿰…...