当前位置: 首页 > 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.dtcms.com/a/338884.html

相关文章:

  • DzzOffice版权信息修改教程
  • 遥感amp;机器学习入门实战教程 | Sklearn 案例③:PCA + SVM / 随机森林 对比与调参
  • CSDN 创始人蒋涛:以开源驱动技术创新,拥抱黄金十年
  • LeetCode100-560和为K的子数组
  • 开源 C++ QT Widget 开发(二)基本控件应用
  • leetcode_ 76 最小覆盖子串
  • 决策树(续)
  • 大数据技术栈 —— Redis与Kafka
  • 字符串与算法题详解:最长回文子串、IP 地址转换、字符串排序、蛇形矩阵与字符串加密
  • 磨砂玻璃登录页面使用教程 v0.1.1
  • 【Linux仓库】进程创建与进程终止【进程·柒】
  • 通过C#上位机串口写入和读取浮点数到stm32的片内flash实战4(通过串口下发AD9833设置值并在上位机显示波形曲线)
  • 基于单片机智能点滴输液系统
  • 元素的width和offsetWidth有什么区别
  • java八股文-中间件-参考回答
  • Win11家庭版docker安装MaxKB
  • 【论文阅读】DETR3D: 3D Object Detection from Multi-view Images via 3D-to-2D Queries
  • 边缘智能体:Go编译在医疗IoT设备端运行轻量AI模型(中)
  • 【HTML】3D动态凯旋门
  • 【SpringBoot】15 核心功能 - Web开发原理 - 请求处理 - 常用请求参数注解
  • 【SpringBoot】Dubbo、Zookeeper
  • 【完整源码+数据集+部署教程】鳄梨表面缺陷检测图像分割系统源码和数据集:改进yolo11-MLCA
  • C语言第九章字符函数和字符串函数
  • Go语言快速入门指南(面向Java工程师)
  • 基于SpringBoot+Vue的养老院管理系统的设计与实现 智能养老系统 养老架构管理 养老小程序
  • 外网-内网渗透测试(文件上传漏洞利用)
  • MySQL事务篇-事务概念、并发事务问题、隔离级别
  • 链表基本运算详解:查找、插入、删除及特殊链表
  • 线段树结合矩阵乘法优化动态规划
  • 如何让你的知识分享更有说服力?