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

【Qt开发】常用控件(五)

目录

1 -> windowOpacity

1.1 -> 相关 API

1.2 -> 代码示例

2 -> cursor

2.1 -> 相关 API

2.2 -> 代码示例

2.2.1 -> 在 Qt Designer 中设置按钮的光标

2.2.2 -> 通过代码设置按钮的光标

3 -> 总结


1 -> windowOpacity

在现代 UI 设计中,透明度效果已成为提升用户体验的关键技术。从 macOS 的亚克力效果到 Windows 11 的云母材质,透明界面元素创造出深度感和现代感。Qt 的 windowOpacity 属性提供了实现这些效果的强大工具。

1.1 -> 相关 API

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

1.2 -> 代码示例

调整窗口透明度

1. 在界面上拖放两个按钮,分别用来增加不透明度和减少不透明度。

objectName 分别是 pushButton_add 和 pushButton_sub。

2. 编写 widget.cpp,编写两个按钮的 slot 函数

  • 点击 pushButton_add 会增加不透明度,窗口会逐渐恢复
  • 点击 pushButton_sub 会减少不透明度,窗口会越来越透明
#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_add_clicked()
{float opacity = this->windowOpacity();if (opacity >= 1){return;}qDebug() << opacity;opacity += 0.1;this->setWindowOpacity(opacity);
}void Widget::on_pushButton_sub_clicked()
{float opacity = this->windowOpacity();if (opacity <= 0){return;}qDebug() << opacity;opacity -= 0.1;this->setWindowOpacity(opacity);
}

3. 执行程序,可以看到,点击几下 - 之后,就可以透过窗口看到后面的代码了。点击 + 又会逐渐恢复。

同时在控制台也可以看到 opacity 数值的变化。

2 -> cursor

2.1 -> 相关 API

API说明
cursor()

获取到当前 widget 的 cursor 属性,返回 QCursor 对象

当鼠标悬停在该 widget 上时,就会显示出对应的形状

setCursor(const QCursor& cursor)

设置该 widget 光标的形状

仅在鼠标停留在该 widget 上时生效

QGuiApplication::setOverrideCursor(const QCursor& cursor)

设置全局光标的形状。对整个程序中的所有 widget 都会生效

覆盖上面的 setCursor 设置的内容

2.2 -> 代码示例

2.2.1 -> 在 Qt Designer 中设置按钮的光标

1. 在界面中创建一个按钮。

2. 直接在右侧属性编辑区修改 cursor 属性为 “等待”。

3. 运行程序,鼠标悬停到按钮上,即可看到光标的变化。

2.2.2 -> 通过代码设置按钮的光标

1. 编写 widget.cpp。

其中 Qt::WaitCursor 就是自带的沙漏形状的光标。

#include <QPushButton>
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);// 创建按钮QPushButton* button = new QPushButton(this);button->resize(100, 50);button->move(100, 100);button->setText("这是⼀个按钮");// 设置按钮的 cursorbutton->setCursor(QCursor(Qt::WaitCursor));
}

系统内置的光标形状如下

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};

2. 运行程序,观察效果。

3 -> 总结

windowOpacity方面,它是实现窗口透明度效果的关键属性,通过windowOpacity()可获取当前窗口不透明度(返回 0.0-1.0 的 float 值,对应全透明到完全不透明),setWindowOpacity(float n)则能设置该数值。文中给出的代码示例通过两个按钮的槽函数,实现了点击增减窗口透明度的功能,直观展现了该属性的用法,能让窗口呈现从清晰到透明再恢复的动态效果。

关于光标设置,涉及多个 API:cursor()用于获取当前组件的光标对象,setCursor(const QCursor& cursor)可设置组件的光标形状(仅在鼠标悬停该组件时生效),QGuiApplication::setOverrideCursor(const QCursor& cursor)则能设置全局光标(覆盖组件自身设置)。示例不仅展示了在 Qt Designer 中直接修改按钮光标属性的操作,还通过代码演示了如何为按钮设置光标形状,同时列出了 Qt 系统内置的多种光标形状枚举,方便开发者根据需求选用。


感谢各位大佬支持!!!

互三啦!!!

http://www.lryc.cn/news/625354.html

相关文章:

  • 金融行业私域运营:企业微信+AI如何实现数智化经营?
  • LeetCode-17day:贪心算法
  • 云计算核心技术之云存储技术
  • C语言基础:(十九)数据在内存中的存储
  • MoonBit Perals Vol.06: Moonbit 与 LLVM 共舞 (上):编译前端实现
  • consul-基础概念
  • 一个多功能的文件分享工具--zdir手动部署教程
  • Tesollo DeltoGripper DG-5F具有抓握和操纵能力的灵巧手
  • Swift与C++混编深度解决方案:手动桥接 vs SwiftyCPP框架性能终极评测
  • 垂直领域大模型构建:法律行业“类ChatGPT”系统的训练与落地
  • 快手可灵招海外产品运营实习生
  • 亚矩阵云手机智能定位:助力Snapchat矩阵账号的本地化内容运营穿透技术
  • 【光学神经网络与人工智能应用专题】
  • 禾赛激光雷达AT128P/海康相机(2):基于欧几里德聚类的激光雷达障碍物检测
  • 【科研绘图系列】R语言绘制多种小提琴和云雨图
  • Kubernetes 简介
  • 初步学习WPF-Prism
  • 深入解析:Unity、Unreal Engine与Godot引擎中的Uniform变量管理
  • [ORACLE数据库] ORACLE 的 PL/SQL 块
  • 摄像头模块在运动相机中的应用
  • arcgis-提取范围中最大占比面积的信息或唯一值
  • 面试问题详解四:Qt 多线程与信号槽机制
  • Day09 Go语言深入学习(1)
  • 8.19作业
  • 工业相机基本知识解读:像元、帧率、数据接口等
  • 视觉采集模块的用法
  • HTML应用指南:利用GET请求获取全国新荣记门店位置信息
  • BEV:隐式相机视角转换-----BEVFormer
  • C#/.NET/.NET Core技术前沿周刊 | 第 50 期(2025年8.11-8.17)
  • 【leetcode 3】最长连续序列 (Longest Consecutive Sequence) - 解题思路 + Golang实现