当前位置: 首页 > news >正文

【Qt 学习笔记】QWidget的windowOpacity属性 | cursor属性 | font属性


  • 博客主页:Duck Bro 博客主页
  • 系列专栏:Qt 专栏
  • 关注博主,后期持续更新系列文章
  • 如果有错误感谢请大家批评指出,及时修改
  • 感谢大家点赞👍收藏⭐评论✍

QWidget的windowOpacity属性 | cursor属性 | font属性

文章编号:Qt 学习笔记 / 18

文章目录

  • QWidget的windowOpacity属性 | cursor属性 | font属性
    • 一、windowOpacity属性
      • 1. 简介
      • 2. API
      • 3. 代码示例
        • 示例1:调整窗口透明度
    • 二、cursor属性
      • 1. 简介
      • 2. API
      • 3. 系统内置的光标形状
      • 4. 代码示例
        • 示例1:在Qt Designer中设置按钮的光标
        • 示例2:通过代码设置按钮的光标
        • 示例3:自定义鼠标光标
    • 三、font属性
      • 1. 简介
      • 2. API
      • 3. QFont各属性说明
      • 4. 代码示例
        • 示例1:在Qt Designer中设置字体属性
        • 示例2:在代码中设置字体属性


一、windowOpacity属性

1. 简介

windowOpacity属性是Qt中QWindow类的一个属性。它用于设置窗口的不透明度(透明度)。

窗口的不透明度值范围是0.0到1.0之间,其中0.0表示完全透明,1.0表示完全不透明。默认情况下,窗口的不透明度为1.0,即完全不透明。

您可以使用setWindowOpacity()方法来设置窗口的不透明度。例如,以下代码将窗口的不透明度设置为0.5:

window->setWindowOpacity(0.5);

此外,您还可以使用windowOpacity()方法获取当前窗口的不透明度值。例如,以下代码将当前窗口的不透明度值打印出来:

qDebug() << window->windowOpacity();

请注意,windowOpacity属性仅适用于QWindow类的对象,而不适用于QWidget类的窗口对象。如果您正在使用QWidget类的窗口对象,请改用QWidget类的setWindowOpacity()和windowOpacity()方法。

2. API

API说明
windowOpacity()获取到控件的不透明数值. 返回 float, 取值为 0.0 -> 1.0 其中 0.0 表⽰全透明, 1.0 表⽰完全不透明.
setWindowOpacity(float n)设置控件的不透明数值.

3. 代码示例

示例1:调整窗口透明度
  • 在界⾯上拖放两个按钮, 分别⽤来增加不透明度和减少不透明度.
    在这里插入图片描述
  • 编写 wdiget.cpp, 编写两个按钮的 slot 函数
    UP 会减少不透明度, 也就是窗⼝越来越透明
    DOWN 会增加不透明度, 窗⼝会逐渐恢复

在这里插入图片描述

  • 执⾏程序,可以看到。点击UP增加不透明度,点击DOWN减少透明度
    在这里插入图片描述

文件代码:

#include "widget.h"
#include "ui_widget.h"
#include<QDebug>
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);
}Widget::~Widget()
{delete ui;
}void Widget::on_pushButton_up_clicked()
{//获取窗口不透明值float opacity = this->windowOpacity();//进行判定不透明值是否超过1.0if(opacity >= 1.0){return;}//打印不透明值qDebug()<<opacity;//增加不透明度opacity+=0.1;//设置到窗口上this->setWindowOpacity(opacity);
}void Widget::on_pushButton_down_clicked()
{//获取窗口不透明值float opacity = this->windowOpacity();//进行判定不透明值是否小于1.0if(opacity <= 0.0){return;}//打印不透明值qDebug()<<opacity;//减少不透明度opacity-=0.1;//设置到窗口上this->setWindowOpacity(opacity);
}

二、cursor属性

1. 简介

在Qt中,QWidget类和QApplication类都提供了一个cursor属性,用于设置和获取窗口或应用程序的鼠标指针样式。该属性可用于控制鼠标在窗口上的显示效果。

常见的鼠标指针样式包括箭头、手指、等待、文本输入等。通过设置cursor属性,可以更改鼠标指针的样式。

QCursor类定义了一组预定义的光标样式,包括箭头、手指、等待、文本输入等。可以使用这些预定义样式,也可以创建自定义的光标样式。

设置窗口的cursor属性可以使用setCursor()方法,例如:

QWidget *widget = new QWidget;
widget->setCursor(Qt::PointingHandCursor);

上述代码演示了Qt中的cursor属性的基本用法。通过设置和获取cursor属性,可以实现在窗口和应用程序中自定义鼠标指针的样式。

2. API

API说明
cursor()获取到当前 widget 的 cursor 属性, 返回 QCursor 对象.当⿏标悬停在该 widget 上时, 就会显⽰出对应的形状.
setCursor(const QCursor& cursor)设置该 widget 光标的形状. 仅在⿏标停留在该 widget 上时⽣效.
QGuiApplication::setOverrideCursor(const QCursor&cursor)设置全局光标的形状. 对整个程序中的所有 widget 都会⽣效. 覆盖上⾯的 setCursor 设置的内容.

3. 系统内置的光标形状

Ctrl + 左键 点击 Qt::WaitCursor 跳转到源码即可看到.

enum CursorShape {ArrowCursor,UpArrowCursor,CrossCursor,WaitCursor,IBeamCursor,SizeVerCursor,SizeHorCursor,SizeBDiagCursor,SizeFDiagCursor,SizeAllCursor,BlankCursor,SplitVCursor,SplitHCursor,PointingHandCursor,ForbiddenCursor,WhatsThisCursor,BusyCursor,OpenHandCursor,ClosedHandCursor,DragCopyCursor,DragMoveCursor,DragLinkCursor,LastCursor = DragLinkCursor,BitmapCursor = 24,CustomCursor = 25}

4. 代码示例

示例1:在Qt Designer中设置按钮的光标
  • 在界⾯中创建⼀个按钮,直接在右侧属性编辑区修改 cursor 属性为 “等待”
    在这里插入图片描述
  • 运行程序, 鼠标悬停到按钮上, 即可看到光标的变化 (window11的等待效果)
    在这里插入图片描述
示例2:通过代码设置按钮的光标
  • 设置一个按钮并进行设置大小及位置,其中 Qt::WaitCursor 就是⾃带的沙漏形状的光标.
    在这里插入图片描述
  • 运⾏程序, 观察效果.
    在这里插入图片描述

文件代码:

#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(300,150);//修改按钮在界面中的位置button->move(200,100);//设置按钮的文本button->setText("按钮");//设置按钮的cursor属性button->setCursor(QCursor(Qt::WaitCursor));}Widget::~Widget()
{delete ui;
}
示例3:自定义鼠标光标
  • Qt ⾃带的光标形状有限,可以自己找图片,做成鼠标光标。以下图为例图片来自阿里巴巴矢量图标库
    在这里插入图片描述
  • 创建 qrc 资源⽂件, 添加前缀 / , 并加⼊ dianzan.png 详细步骤参考:qrc文件机制
    在这里插入图片描述
    在这里插入图片描述
  • 编写 widget.cpp
    热点:鼠标点击时生效的位置,类似于箭头的尖尖
    在这里插入图片描述
  • 运⾏程序, 观察效果
    在这里插入图片描述

文件代码:

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);// 创建⼀个位图对象, 加载⾃定义光标图⽚QPixmap pixmap(":/dianzan.png");// 缩放图⽚为 64 * 64 的尺⼨pixmap =pixmap.scaled(64,64);// 创建 QCursor 对象, 并指定 "热点" 为 (2, 2) 坐标位置.// 所谓 "热点" 就是⿏标点击时生效的位置,类似于箭头的尖尖QCursor cursor(pixmap,2,2);// 设置光标this->setCursor(cursor);
}Widget::~Widget()
{delete ui;
}

三、font属性

1. 简介

在Qt中,font属性用于设置控件的字体样式。每个Qt控件都有一个font属性,用于设置控件的字体。

在Qt中,可以使用以下方法来设置控件的字体:

  1. 使用控件自己的setFont方法来设置字体,例如:这将将按钮的字体设置为Arial字体,大小为12。
QPushButton* button = new QPushButton("Button");
button->setFont(QFont("Arial", 12));
  1. 使用样式表(QSS)来设置字体,例如:这将将所有QPushButton控件的字体设置为Arial字体,大小为12。
QPushButton {font-family: Arial;font-size: 12px;
}
  1. 使用控件的QPalette对象来设置字体,例如:这将将按钮的字体设置为Arial字体,大小为12。
QPushButton* button = new QPushButton("Button");
QPalette palette = button->palette();
palette.setFont(QFont("Arial", 12));
button->setPalette(palette);

总之,Qt中的font属性可以通过控件自带的方法、样式表或QPalette对象来设置,可以自由选择最适合的方法来设置控件的字体样式。

2. API

API说明
font()获取当前 widget 的字体信息. 返回 QFont 对象.
setFont(const QFont& font)设置当前 widget 的字体信息

3. QFont各属性说明

属性说明
family字体家族. ⽐如 “楷体”, “宋体”, “微软雅⿊” 等.
pointSize字体⼤⼩
weight字体粗细. 以数值⽅式表⽰粗细程度取值范围为 [0, 99], 数值越⼤, 越粗.
bold是否加粗. 设置为 true, 相当于 weight 为 75. 设置为 false 相当于
weight为 50.
italic是否倾斜
underline是否带有下划线
strikeOut是否带有删除线

4. 代码示例

示例1:在Qt Designer中设置字体属性
  • 创建一个label标签,在右侧的属性编辑区, 设置该 label 的 font 相关属性
    在这里插入图片描述
  • 通过修改右边font的属性,来改变label里的文本
    在这里插入图片描述
  • 执行程序,运行结果
    在这里插入图片描述
示例2:在代码中设置字体属性
  • 在界⾯中创建 label,并修改font属性,设置到label
    在这里插入图片描述
  • 执行代码,运行结果
    在这里插入图片描述

文件代码:

#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的文本内容label->setText("这是一段文本");//改变label的位置label->move(200,300);//创建字体对象QFont font;//设置字体家族font.setFamily("楷体");//设置字体大小font.setPixelSize(20);//设置字体加粗font.setBold(true);//设置字体倾斜font.setItalic(true);//设置字体下划线font.setUnderline(true);//设置字体删除线font.setStrikeOut(true);//设置字体对象到label上label->setFont(font);
}Widget::~Widget()
{delete ui;
}

在这里插入图片描述

相关文章:

【Qt 学习笔记】QWidget的windowOpacity属性 | cursor属性 | font属性

博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;Qt 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ QWidget的windowOpacity属性 | cursor属性 | font属性 文章编号&#…...

Python爬虫:requests模块的基本使用

学习目标&#xff1a; 了解 requests模块的介绍掌握 requests的基本使用掌握 response常见的属性掌握 requests.text和content的区别掌握 解决网页的解码问题掌握 requests模块发送带headers的请求掌握 requests模块发送带参数的get请求 1 为什么要重点学习requests模块&…...

C++traits

traits C的标准库提供了<type_traits>,它定义了一些编译时基于模板类的接口用于查询、修改类型的特征&#xff1a;输入的时类型&#xff0c;输出与该类型相关的属性 通过type_traits技术编译器可以回答一系列问题&#xff1a;它是否为数值类型&#xff1f;是否为函数对象…...

gitee和idea集成

1 集成插件 2 配置账号密码 3 直接将项目传到仓库 4直接从gitee下载项目...

阿维·威格德森(Avi Wigderson)研究成果对人工智能领域的应用有哪些影响

AI人工智能的影响 威格德森&#xff08;Avi Wigderson&#xff09;的研究成果对人工智能领域的应用产生了深远的影响。 首先&#xff0c;威格德森在计算复杂性理论、算法和优化方面的贡献为人工智能领域提供了高效、准确的计算模型和算法。他的研究帮助我们更好地理解计算问题…...

【免费领取源码】可直接复用的医院管理系统!

今天给大家分享一套基于SpringbootVue的医院管理系统源码&#xff0c;在实际项目中可以直接复用。(免费提供&#xff0c;文中自取) 系统运行图&#xff08;设计报告和接口文档&#xff09; 1、后台管理页面 2、排班管理页面 3、设计报告包含接口文档 源码免费领取方式 后台私信…...

leetcode代码记录(全排列 II

目录 1. 题目&#xff1a;2. 我的代码&#xff1a;小结&#xff1a; 1. 题目&#xff1a; 给定一个可包含重复数字的序列 nums &#xff0c;按任意顺序 返回所有不重复的全排列。 示例 1&#xff1a; 输入&#xff1a;nums [1,1,2] 输出&#xff1a; [[1,1,2], [1,2,1], [2,1…...

【数据结构与算法】之双向链表及其实现!

​ 个人主页&#xff1a;秋风起&#xff0c;再归来~ 数据结构与算法 个人格言&#xff1a;悟已往之不谏&#xff0c;知来者犹可追 克心守己&#xff0c;律己则安&#xff01; 目录 1、双向链表的结构及概念 2、双向链表的实现 2.1 要实现的接口…...

记一次奇妙的某个edu渗透测试

前话&#xff1a; 对登录方法的轻视造成一系列的漏洞出现&#xff0c;对接口确实鉴权造成大量的信息泄露。从小程序到web端网址的奇妙的测试就此开始。&#xff08;文章厚码&#xff0c;请见谅&#xff09; 1. 寻找到目标站点的小程序 进入登录发现只需要姓名加学工号就能成功…...

设计模式学习笔记 - 设计模式与范式 -总结:1.回顾23中设计模式的原理、背后的思想、应用场景等

1.创建型设计模式 创建型设计模式包括&#xff1a;单例模式、工厂模式、建造者模式、原型模式。它主要解决对象的创建问题&#xff0c;封装复杂的创建过程&#xff0c;解耦对象的创建代码和使用代码。 1.单例模式 单例模式用来创建全局唯一的对象。一个类只允许创建一个对象…...

22 文件系统

了解了被打开的文件&#xff0c;肯定还有没被打开的文件&#xff0c;就是磁盘上的文件。先从磁盘开始认识 磁盘 概念 内存是掉电易失存储介质&#xff0c;磁盘是永久性存储介质 磁盘的种类有SSD&#xff0c;U盘&#xff0c;flash卡&#xff0c;光盘&#xff0c;磁带。磁盘是…...

OVITO-2.9版本

关注 M r . m a t e r i a l , \color{Violet} \rm Mr.material\ , Mr.material , 更 \color{red}{更} 更 多 \color{blue}{多} 多 精 \color{orange}{精} 精 彩 \color{green}{彩} 彩&#xff01; 主要专栏内容包括&#xff1a; †《LAMMPS小技巧》&#xff1a; ‾ \textbf…...

【Java开发指南 | 第一篇】类、对象基础概念及Java特征

读者可订阅专栏&#xff1a;Java开发指南 |【CSDN秋说】 文章目录 类、对象基础概念Java特征 Java 是一种面向对象的编程语言&#xff0c;它主要通过类和对象来组织和管理代码。 类、对象基础概念 类&#xff1a;类是一个模板&#xff0c;它描述一类对象的行为和状态。例如水…...

Neo4j 图形数据库中有哪些构建块?

Neo4j 图形数据库具有以下构建块 - 节点属性关系标签数据浏览器 节点 节点是 Graph 的基本单位。 它包含具有键值对的属性&#xff0c;如下图所示。 NEmployee 节点 在这里&#xff0c;节点 Name "Employee" &#xff0c;它包含一组属性作为键值对。 属性 属性是…...

002 springboot整合mybatis-plus

文章目录 TestMybatisGenerate.javapom.xmlapplication.yamlReceiveAddressMapper.xmlreceive_address.sqlReceiveAddress.javaReceiveAddressMapper.javaIReceiveAddressServiceReceiveAddressServiceImpl.javaReceiveAddressController.javaTestAddressService.javaSpringboo…...

代码随想录训练营第三十五期|第天16|二叉树part03|104.二叉树的最大深度 ● 111.二叉树的最小深度● 222.完全二叉树的节点个数

104. 二叉树的最大深度 - 力扣&#xff08;LeetCode&#xff09; 递归&#xff0c;可以前序遍历&#xff0c;也可以后序遍历 前序遍历是backtracking 下面是后序遍历的代码&#xff1a; /*** Definition for a binary tree node.* public class TreeNode {* int val;* …...

Mac版2024 CleanMyMac X 4.15.2 核心功能详解 cleanmymac这个软件怎么样?cleanmymac到底好不好用?

近些年伴随着苹果生态的蓬勃发展&#xff0c;越来越多的用户开始尝试接触Mac电脑。然而很多人上手Mac后会发现&#xff0c;它的使用逻辑与Windows存在很多不同&#xff0c;而且随着使用时间的增加&#xff0c;一些奇奇怪怪的文件也会占据有限的磁盘空间&#xff0c;进而影响使用…...

【华为OD机试】执行任务赚积分【C卷|100分】

题目描述 现有N个任务需要处理&#xff0c;同一时间只能处理一个任务&#xff0c;处理每个任务所需要的时间固定为1。 每个任务都有最晚处理时间限制和积分值&#xff0c;在最晚处理时间点之前处理完成任务才可获得对应的积分奖励。 可用于处理任务的时间有限&#xff0c;请问在…...

mybatis分页实现总结

1.mybatis拦截器相关知识 1.作用 mybatis的拦截器是mybatis提供的一个拓展机制&#xff0c;允许用户在使用时根据各自的需求对sql执行的各个阶段进行干预。比较常见的如对执行的sql进行监控&#xff0c;排查sql的执行时间&#xff0c;对sql进行拦截拼接需要的场景&#xff0c…...

Vue3——html-doc-js(html导出为word的js库)

一、下载 官方地址 html-doc-js - npm npm install html-doc-js 二、使用方法 // 使用页面中引入 import exportWord from html-doc-js// 配置项以及实现下载方法 const wrap document.getElementById(test)const config {document:document, //默认当前文档的document…...

[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?

&#x1f9e0; 智能合约中的数据是如何在区块链中保持一致的&#xff1f; 为什么所有区块链节点都能得出相同结果&#xff1f;合约调用这么复杂&#xff0c;状态真能保持一致吗&#xff1f;本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里&#xf…...

CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型

CVPR 2025 | MIMO&#xff1a;支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题&#xff1a;MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者&#xff1a;Yanyuan Chen, Dexuan Xu, Yu Hu…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作&#xff0c;无需更改相机配置。但是&#xff0c;一…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎&#xff08;Physics Engine&#xff09; 物理引擎 是一种通过计算机模拟物理规律&#xff08;如力学、碰撞、重力、流体动力学等&#xff09;的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互&#xff0c;广泛应用于 游戏开发、动画制作、虚…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

引言&#xff1a;为什么 Eureka 依然是存量系统的核心&#xff1f; 尽管 Nacos 等新注册中心崛起&#xff0c;但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制&#xff0c;是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

&#x1f680; C extern 关键字深度解析&#xff1a;跨文件编程的终极指南 &#x1f4c5; 更新时间&#xff1a;2025年6月5日 &#x1f3f7;️ 标签&#xff1a;C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言&#x1f525;一、extern 是什么&#xff1f;&…...

【Oracle】分区表

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...