【Qt】QWidget属性2
🏠个人主页:Yui_
🍑操作环境:Qt Creator
🚀所属专栏:Qt

文章目录
- 1. windowOpacity属性
- 2. cursor属性
- 2.1 自定义光标
- 3. font属性
- 4.tooltip属性
- 5. focusPolicy属性
- 6. 总结
由于QWidget的常见属性实在太多,不得不分为两篇文章,如果你没有看过上一篇关于QWidget属性的文章,还是推荐看一下。
1. windowOpacity属性
| API | 说明 |
|---|---|
| windowOpacity() | 获取到控件的不透明数值,返回float,取值范围(0.0,1.0)其中0.0表示全透明,1.0表示完全不透明。 |
| setWindowOpacity() | 设置控件的不透明数值 |
| 下面我会编写一个程序,程序中有两个按钮,一个按钮会让窗口的透明度上升一个让窗口的透明度下降。 |
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);
}Widget::~Widget()
{delete ui;
}void Widget::on_pushButton_clicked()
{//透明度上升if(this->windowOpacity()>0){this->setWindowOpacity(this->windowOpacity()-0.1);}
}void Widget::on_pushButton_2_clicked()
{//透明度下降if(this->windowOpacity()<1){this->setWindowOpacity(this->windowOpacity()+0.1);}
}

2. cursor属性
cursor的中文释义为光标,也就是我们的鼠标光标。
| API | 说明 |
|---|---|
| cursor() | 获取到当前widget的cursor属性,返回QCursor对象当鼠标悬停在该widget上时,就会显示出对应的形状。 |
| setCursor(const QCursor& cursor) | 设置该widget光标的形状,仅在鼠标停留在该widget上时生效。 |
| QGuiApplication::setOverrideCursor(const QCursor& cursor) | 设置全局光标的形状,对整个程序中的所有widget都会生效,会覆盖setCursor设置的内容。 |
| 这里有一个简单的示例: | |
![]() | |
| 拖动一个控件,编辑右侧的属性栏即可改变光标样式。 | |
| 如果我们用代码写,就是这样: |
#include "widget.h"
#include "ui_widget.h"
#include <QPushButton>
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);QPushButton* button = new QPushButton(this);button->resize(100,100);button ->move(200,200);button->setText("我是一个按钮~");//设置按钮的cursorbutton->setCursor(QCursor(Qt::WaitCursor));
}Widget::~Widget()
{delete ui;
}
按住alt点击Qt::WaitCursor我们就可以看到系内置的光标了

除此之外,我们还可以自定义光标.
2.1 自定义光标
Qt自带的光标有限,我们也可以自己找图片,做成鼠标的光标。

我们就以这张图片为光标吧,哔哩哔哩的看板娘(不知道是22还是33~)
依旧是创建Qrc文件

创建qrc文件成功,如果你不知道如何创建qrc文件,可以去看笔者上一篇介绍qrc的文章。
#include "widget.h"
#include "ui_widget.h"
#include <QPixmap>
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);QPixmap pixmap(":/2233.png");//创建一个位图对象,加载自定义光标图片pixmap = pixmap.scaled(64,64);//缩放图片为64*64的尺寸//创建QCursor对象,并指定热点为(2,2)坐标位置//这里的热点就是鼠标点击时生效的位置QCursor cursor(pixmap,2,2);//设置光标this->setCursor(cursor);
}Widget::~Widget()
{delete ui;
}

3. font属性
| API | 说明 |
|---|---|
| font() | 获取当前widget的字体信息,返回QFont对象 |
| setFont(const QFont&font) | 设置当前widget的字体信息 |
| 关于QFont |
| 属性 | 说明 |
|---|---|
| family | 字体家族.⽐如"楷体",“宋体”,"微软雅⿊"等. |
| pointSize | 字体⼤⼩ |
| weight | 字体粗细.以数值⽅式表⽰粗细程度取值范围为[0,99],数值越⼤,越 粗. |
| bold | 是否加粗.设置为true,相当于weight为75.设置为alse相当于 weight为50. |
| italic | 是否倾斜 |
| underline | 是否带有下划线 |
| strikeOut | 是否带有删除线 |
| 我们用代码来演示下吧~ |
#include "widget.h"
#include "ui_widget.h"
#include <QLabel>
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);QLabel* label = new QLabel(this);label->setText("你好啊~");label->move(100,100);QFont font;font.setFamily("微软雅黑");//设置字体家族font.setPointSize(20);//设置字体大小font.setBold(true);//设置字体加粗font.setItalic(true);//设置字体倾斜font.setUnderline(true);//设置字体下划线font.setStrikeOut(true);//设置字体删除线label->setFont(font);//设置字体对象到label上
}Widget::~Widget()
{delete ui;
}

在实际开发过程中字体的属性如何选择就不需要我们操心了,有专门的美工部门~
4.tooltip属性
| API | 说明 |
|---|---|
| setToolTip() | 设置toolTip鼠标悬停在该widget上时会有提示说明 |
| setToolTipDuring | 设置toolTip提示的时间,单位ms时间到后toolTip自动消失 |
| 下面我们会实现一个程序,来看看效果: |
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);ui->pushButton->setToolTip("这是按钮1");ui->pushButton->setToolTipDuration(3000);ui->pushButton_2->setToolTip("这是按钮2");ui->pushButton_2->setToolTipDuration(300);
}Widget::~Widget()
{delete ui;
}

5. focusPolicy属性
设置控件获取到焦点的策略,比如某个控件能否用鼠标选中或者能否通过tab键选中。
所谓“焦点”指的是能选中这个元素,接下来的操作(比如键盘操作)这都是针对该焦点元素进行的
这个对于输入框,单选框复选框等控件非常有用。
如果你玩过即时战略游戏,比如:魔兽争霸或者星际争霸等等,上面的事情就好比在这些游戏中先选中单位,在下达命令一样。
| API | 说明 |
|---|---|
| focusPolicy() | 获取该Widget的focusPolicy,放回Qt::FocusPilicy |
| setFocusPolicy(Qt::FocusPolicy policy) | 设置widget的focusPolicy |
Qt::FocusPolicy是一个枚举类型,取值如下: |
Qt::Nofocus:控件不会接收键盘焦点Qt::TabFocus:控件可以通过Tab键接收焦点。Qt::ClickFocus:控件在鼠标点击时接收焦点。Qt::StrongFocus:控件可以通过Tab键和鼠标点击接收焦点。Qt::WheelFocus:类似于Qt::StrongFocus同时控件也通过鼠标滚轮获取到焦点(新增选项,很少使用)。
光看文字还是太抽象了,下面来用看演示吧~
首先,我们双击formfile的ui文件,拖动4个按钮到中间的框内。

在右侧的属性栏找到该数据

从上到下依次分别设置一下属性:

来看效果:

主要看黑色虚线框。
根据动图的效果我们可以得知,按钮1可以接受点击和tab键,按钮2什么都不接受,按钮3可以接受tab键,按钮4可以接受点击~
和上面设置一致~
6. 总结
本文我们又了解了许多QWidget的新属性,对于这些常见的属性大家可以好好记忆,对于不常见的属性,查文档就可以了~
相关文章:
【Qt】QWidget属性2
🏠个人主页:Yui_ 🍑操作环境:Qt Creator 🚀所属专栏:Qt 文章目录 1. windowOpacity属性2. cursor属性2.1 自定义光标 3. font属性4.tooltip属性5. focusPolicy属性6. 总结 由于QWidget的常见属性实在太多&a…...
OpenGL ES ->乒乓缓冲,计算只用两个帧缓冲对象(Frame Buffer Object)+叠加多个滤镜作用后的Bitmap
乒乓缓冲核心思想 不使用乒乓缓冲,如果要每个滤镜作用下的绘制内容,也就是这个滤镜作用下的帧缓冲,需要创建一个Frame Buffer Object加上对应的Frame Buffer Object Texture使用乒乓缓冲,只用两个Frame Buffer Object加上对应的F…...
数据库练习2
目录 1.向heros表中新增一列信息,添加一些约束,并尝试查询一些信息 2.课堂代码练习 3.题目如下 一、单表查询 1、显示所有职工的基本信息。 2、查询所有职工所属部门的部门号,不显示重复的部门号。 3、求出所有职工的人数。 4…...
macOS Sequoia 15.3 一直弹出“xx正在访问你的屏幕”
🙅 问题描述 macOS 系统升级后(15.2或者15.3均出现过此问题),不管是截图还是开腾讯会议,只要跟捕捉屏幕有关,都一直弹出这个选项,而且所有软件我都允许访问屏幕了,这个不是询问是否…...
OpenCV图像拼接(1)自动校准之校准旋转相机的函数calibrateRotatingCamera()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 cv::detail::calibrateRotatingCamera 是OpenCV中用于校准旋转相机的函数。它特别适用于那种相机相对于一个固定的场景进行纯旋转运动的情况&…...
Conda常用命令汇总(持续更新中)
原文章:安装和使用Miniconda来管理Python环境-CSDN博客 一、Miniconda的使用 Miniconda没有GUI界面,只能通过conda命令对Python环境和软件包进行管理,所以这里主要介绍一下conda的常用命令。 1. Conda相关 (1)查询conda版本 conda --vers…...
C# 调用 VITS,推理模型 将文字转wav音频调试 -数字人分支
Microsoft.ML.OnnxRuntime.OnnxRuntimeException: [ErrorCode:InvalidArgument] Input name: input_name is not in the metadata在 Microsoft.ML.OnnxRuntime.InferenceSession.LookupInputMetadata(String nodeName) 位置 D:\a\_work\1\s\csharp\src\Microsoft.ML.OnnxRuntim…...
Java锁等待唤醒机制
在 Java 并发编程中,锁的等待和唤醒机制至关重要,通常使用 wait()、notify() 和 notifyAll() 来实现线程间的协调。本文将详细介绍这些方法的用法,并通过示例代码加以说明。 1. wait()、notify() 与 notifyAll() 在 Java 中,Obj…...
Docker Compose 常用命令详解
Docker Compose 常用命令详解 Docker Compose 是 Docker 官方提供的一个用于管理多个容器的工具,可以使用 docker-compose.yml 文件定义和运行多容器应用。本篇博客将详细介绍 Docker Compose 的常用命令,帮助你更高效地管理容器。 1. docker compose u…...
C站算法技能题-题解(javascript)
切面条 const 切面条 (n10)>{return 2 ** n 1; } 切面条(0) 2 切面条(1) 3 切面条(2) 5 切面条(10) 1025大衍数列 const 大衍数列 (n100) > {let ans []for(let i1;i<n;i){if(i%2 0){ans.push((i ** 2 ) / 2)}else{ans.push((i ** 2 - 1) / 2)}}return ans…...
【Docker系列一】Docker 简介
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
C++进阶——封装红黑树实现map和set
目录 1、源码及框架分析 2、模拟实现map和set 2.1 复用的红黑树框架及Insert 2.2 iterator的实现 2.2.1 iterator的核心源码 2.2.2 iterator的实现思路 2.3 map支持[ ] 2.4 map和set的代码实现 2.4.1 MyMap.h 2.4.2 MySet.h 2.4.3 RBTree.h 2.4.4 Test.cpp 1、源码及…...
python基础-02-列表+序列数据类型
文章目录 【README】【4】python列表【4.1】列表数据类型【4.1.1】用索引取得列表中的单个值【4.1.2】负数索引【4.1.3】利用切片获取子列表【4.1.4】用索引改变列表中的值【4.1.5】列表连接与复制【4.1.6】del语句删除列表中的元素 【4.2】使用列表【4.2.1】列表用于循环【补充…...
‘闭包‘, ‘装饰器‘及其应用场景
‘闭包’, 装饰器’及其应用场景 一, 闭包及其应用场景 图解 闭包的定义 概述: 内部函数 使用了 外部函数 的变量, 这种写法就称之为闭包. 格式: def 外部函数名(形参列表):外部函数的(局部)变量def 内部函数名(形参列表):内部函数的(局部)变量return 内部函数名前提条件: …...
IDEA 快捷键ctrl+shift+f 无法全局搜索内容的问题及解决办法
本篇文章主要讲解IDEA、phpStrom、webStrom、pyCharm等jetbrains系列编辑器无法进行全局搜索内容问题的主要原因及解决办法。 日期:2025年3月22日 作者:任聪聪 现象描述: 1.按下ctrlshiftf 输入法转为了繁体。 2.快捷键ctrlshiftr 可以全局检…...
Java——Random库
一、作用 Random库——生成随机数 二、实现步骤 1.导包:import java.util.Random; #快捷键:“Random”回车键 2.取得随机数:Random 变量1 new Random(); 3.调用随机数:类型 变量2 变量1.nextInt(n); (代表变量…...
【通过Groovy去热修复线上逻辑】1.执行线上数据修复 2.写工具
1.执行groovy // 实际执行的话, 我们是通过vue提交的 http://localhost:8080/groovy/execute?scriptimport com.example.groovytest.controller.LoginController; LoginController.num251222 还有个技巧: 而执行执行的,则是: 写的工具什么的,想直接使…...
Powershell WSL导出导入ubuntu22.04.5子系统
导出Linux子系统 导出位置在C盘下,根据自己的实际情况更改即可Write-Host "export ubuntu22.04.5" -ForegroundColor Green wsl --export Ubuntu-22.04 c:\Ubuntu-22.04.tar 导入Linux子系统 好处是目录可用在任意磁盘路径,便于迁移不同的设备之间Write-Host &quo…...
【005安卓开发方案调研】之Flutter+Dart技术开发安卓
基于2025年国内移动开发环境现状,结合多份行业分析报告和技术文档,对FlutterDart开发安卓应用的技术成熟度和生态适配性分析如下: 一、技术成熟度评估 1. 跨平台能力达到生产级标准 Flutter的Skia自渲染引擎和Dart的AOT/JIT双编译模式&…...
论文笔记(七十三)Gemini Robotics: Bringing AI into the Physical World
Gemini Robotics: Bringing AI into the Physical World 文章概括1. 引言2. Gemini 2.0的具身推理2.1. 具身推理问答(ERQA)基准测试2.2. Gemini 2.0的具身推理能力2.3. Gemini 2.0支持零样本和少样本机器人控制 3. 使用 Gemini Robotics 执行机器人动作3…...
AI + 医疗 Qwq大模型离线本地应用
通义千问Qwq-32b-FP16可用于社区医院、乡镇卫生院、诊所等小型医疗机构,替代专业合理用药系统,作为药品知识库,实现以下功能: 药品信息智能查询:检索药品的详细说明书、适应症、禁忌症、不良反应及药物相互作用等关键信…...
Vue 3 项目实现国际化指南 i18n
引言 在开发现代 Web 应用时,国际化(Internationalization,简称 i18n)已经成为一个不可或缺的功能。无论是面向全球用户的商业网站,还是需要支持多语言的企业应用,良好的国际化支持都能显著提升用户体验。本…...
元音辅音及其字母组合发音
文章目录 单元音长元音/ɑː//ɔ://u://i://ɜː/// 短元音/ʌ//ɒ//ʊ//ɪ//ə//e/ 双元音/eɪ//aɪ//ɔɪ//ɪə//eə//ʊə//əʊ//aʊ/ 辅音3个鼻辅音m n ŋ 5个独立浊辅音w j r l h 20个清浊相对的辅音s zʃ ʒf vθ p bt dk gts dztʃ dʒtr dr 以下是列举的部分字母组合…...
【Vitis AIE】FPGA图像处理 11 双线性插值 Bilinear Interpolation
双线性插值 https://github.com/Xilinx/Vitis-Tutorials/tree/2024.2/AI_Engine_Development/AIE/Design_Tutorials/11-Bilinear_Interpolation 简介 双线性插值是一种使用重复线性插值来插值两个变量函数的方法。它通常用于以下应用: 图像处理和计算机视觉&…...
Linux | 安装 Samba将ubuntu 的存储空间指定为windows 上的一个磁盘
01 安装 samba 文件来实现。比如把我们 ubuntu 的存储空间指定为我们 windows 上的一个磁盘,然后我们在这个磁盘里面创建 .c 文件,进行我们代码的修改和编写,可以安装 samba 文件来实现。 samba 是一种网络共享服务,可以通过网络访问我们指定的文件夹 02 第一步:下…...
一文说清预训练与微调:AI的双重训练法则
什么是预训练? 预训练是大型语言模型训练的第一步。它在资金和计算能力的支持下,通过深入分析大量的文本数据,使模型建立起语言的基本构架。在这一阶段,模型通过学习海量的书籍、文章和网页,识别出语言的语法、句法和…...
solana增加流动性和删除流动性
在 Solana 区块链上增加和删除流动性通常通过去中心化交易所(DEX)实现,例如 Raydium 或 Orca。以下是详细的操作流程和注意事项: 一、增加流动性 步骤: 1. 连接钱包 使用支持 Solana 的钱包(如 Phantom、…...
996引擎-接口测试:音效测试NPC
996引擎-接口测试:音效测试NPC 参考资料local offset = 1 -- 默认偏移量function main(player, newOffset)offset = newOffset or offset -- 更新偏移量local buttonWidth =...
javabean类,测试类,工具类都是什么?
JavaBean类 用来描述一类事物的类。比如Student、Teacher、Dog、Cat 例如下面的这个就是JavaBean类 package com.hong.static01demo;public class Student {//姓名,年龄,性别private String name;private int age;private String gender;public stati…...
基于C8051F020单片机的液晶显示,LCD1602并口驱动,单片机并口驱动LCD1602
一、前言 LCD1602是一种广泛使用的字符型液晶显示模块,有8根数据线和3根控制线E,RS和R/W,8根数据线与单片机P6连接,3根控制线与使用P1口的P1.4、P1.5、P1.6连接,VO连接了P1.7,通过给P1.7赋值0或1ÿ…...

