目录
2.2.1 -> 在 Qt Designer 中设置按钮的光标
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("这是⼀个按钮");
// 设置按钮的 cursor
button->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 系统内置的多种光标形状枚举,方便开发者根据需求选用。
感谢各位大佬支持!!!
互三啦!!!