【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.0
    if(opacity >= 1.0){
        return;
    }
    //打印不透明值
    qDebug()<<opacity;
    //增加不透明度
    opacity+=0.1;
    //设置到窗口上
    this->setWindowOpacity(opacity);
}

void Widget::on_pushButton_down_clicked()
{
    //获取窗口不透明值
    float opacity = this->windowOpacity();
    //进行判定不透明值是否小于1.0
    if(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;
}


在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/540692.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

抖音视频无水印采集拓客软件|视频批量下载提取工具

抖音视频无水印批量采集拓客软件助力高效营销&#xff01; 随着抖音平台的崛起&#xff0c;视频已成为各行各业进行营销的重要工具。但是&#xff0c;传统的视频下载方式往往效率低下&#xff0c;无法满足快速获取大量视频的需求。针对这一问题&#xff0c;我们开发了一款视频无…

Springboot+Vue项目-基于Java+MySQL的校园管理系统(附源码+演示视频+LW)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &…

基于公共转点的Alpha shapes有序边缘点提取

1、原理介绍 由Edelsbrunner H提出的alpha shapes算法是一种简单、有效的快速提取边界点算法。其克服了点云边界点形状影响的缺点,可快速准确提取边界点,其原理如下:对于任意形状的平面点云,若一个半径为a的圆,绕其进行滚动,其滚动的轨迹形成的点为轮廓点。需要注意的是,…

一文读懂Java中的WebEndpointProperties类(附Demo)

目录 前言1. 基本知识2. Demo3. 彩蛋 前言 对于Java的相关知识&#xff0c;推荐阅读&#xff1a;java框架 零基础从入门到精通的学习路线 附开源项目面经等&#xff08;超全&#xff09; 1. 基本知识 Spring Boot 的配置类 WebEndpointProperties&#xff0c;用于配置 Web 端…

Flutter仿Boss-7.首页列表

效果 考察使用 Flutter Model的创建TabBar及TabBarView 的使用标签Wrap控件的使用列表ListView的使用 具体实现 今天懒的写文字了&#xff0c;想看具体实现的可以直接去我的github上&#xff1a; github&#xff1a;github.com/yixiaolunhui/flutter_project

Flutter第九弹 构建列表元素间距

目标&#xff1a; 1&#xff09;Flutter Widget组件之间间距怎么表示&#xff1f; 2&#xff09;列表怎么定义子项之间间距&#xff1f; 一、间距的表示组件 列表组件的间距一般采用固定间距&#xff0c;间距占据可见的空间。 已经使用的表示间距的组件 Spacer&#xff1a…

什么是NLP?

&#x1f916;NLP是什么&#xff1f;&#x1f916; NLP&#xff08;Natural Language Processing&#xff09;&#xff0c;全称自然语言处理&#xff0c;是人工智能不可或缺的一环&#xff0c;它搭建了人与计算机之间沟通的桥梁&#x1f309;。 &#x1f6e0;️NLP强大功能一…

QT QScrollBar 滚动条美化

滚动条区域 滚动条区域是指滚动条中可单独通过qss修改样式的部分 垂直滚动条包括&#xff1a;sub-line、add-line、add-page、sub-page、up-arrow、down-arrow、handle 水平滚动条&#xff1a;sub-line、add-line、add-page、sub-page、left-arrow、right-arrow、handle 区域…

大数据实训进行时:数据标注项目

数据标注项目 培训目的 让同学们先熟悉理论知识&#xff0c;如&#xff1a;识别障碍物是否满足拉框的要求&#xff0c;如何进行拉框&#xff1b;熟悉标注操作&#xff0c;培养出能够进入正式项目的人员 培训地点 理论&#xff1a;学术报告厅、阶梯教室 实操&#xff1a;1实…

Project Euler_Problem 172_Few Repeated Digits_动态规划

原题目&#xff1a; 题目大意&#xff1a;18位数里头&#xff0c;有多少个数&#xff0c;对于每个数字0-9&#xff0c;在这18位里面出现均不超过3次 111222333444555666 布星~~ 112233445566778899 可以~~ 解题思路&#xff1a; 动态规划 代码: ll F[19][3000000];void …

项目5-博客系统4+加密/加盐

1.加密介绍 在MySQL数据库中, 我们常常需要对密码, ⾝份证号, ⼿机号等敏感信息进⾏加密, 以保证数据的安全性. 如果使⽤明⽂存储, 当⿊客⼊侵了数据库时, 就可以轻松获取到⽤⼾的相关信息, 从⽽对⽤⼾或者企业造成信息泄漏或者财产损失. ⽬前我们⽤⼾的密码还是明⽂设置的, …

FebHost:告诉你法国域名.FR的注册步骤

要全面了解法国.FR域名注册过程&#xff0c;请按照我们的 6 步指南注册 .fr 域名。 第 1 步&#xff1a;进行域名可用性搜索 首先检查域名的可用性。使用域名查询工具进行快速有效的搜索&#xff0c;查看您所需的域名是否可用。 第 2 步&#xff1a;验证资格 注册 .fr 域名必…

《分布式系统可用性保证方法和实践》

本文属于专栏《构建工业级QPS百万级服务》系列简介-CSDN博客 目录 1、什么是可用性 2、保障可用性的方法 2.1、可用性保障的前置手段 2.1.1、灰度验证 2.1.2、小流量验证 2.1.3、上线流程 2.1.4、前置手段总结 2.2、可用性保障的后置手段 2.2.1、问题发现 2.2.1…

AI-数学-高中-35概率的基本(运算)性质

原作者视频&#xff1a;【概率】【一数辞典】4概率的基本&#xff08;运算&#xff09;性质_哔哩哔哩_bilibili 概率的基本&#xff08;运算&#xff09;性质&#xff1a; 1.任意一个随机事件A的发生概率>0; 2.必然事件的概率1&#xff0c;不可能事件概率为空&#xff1b;…

ARM单片机的GPIO口在控制不同LED、按键时的设置

个人备忘&#xff0c;不喜勿喷。 GPIO口在驱动共阴极、共阳极LED灯时需要不同的初始化设置 对于这一类的led灯&#xff1a; 最好选择推挽、上拉、高速输出&#xff0c;同时IO口初始化时需要拉高。 上面这种需要下拉输入&#xff1b; 上图这种需要上拉输入&#xff0c;这样才…

uniapp APP真机调试接口请求不到服务器解决方法

项目场景&#xff1a; 在使用Hbuilder开发uniapp的过程中&#xff0c;出现了两个在 Chrome 调试中正常&#xff0c;但打包后异常的问题&#xff0c;特此记录。 问题描述 在 H5 端请求接口正常请求。 App 端 请求接口&#xff0c;提示 "{"errMsg":"reque…

低成本微调LLM

低成本微调LLM 最近在微调不同量级上的大模型&#xff0c;包括Llama-2-7b&#xff0c;Llama-2-13b&#xff0c;Llama-2-70b&#xff0c;Yi-34b&#xff0c;Qwen-14b&#xff0c;Qwen-72b等大模型。在有限的资源上微调大模型&#xff0c;节约显存&#xff0c;可以考虑使用 LoRA…

EPSON L4160 Series打印机驱动安装

EPSON L4160 Series 官方网站下载 win64驱动 accept后自动下载。 安装 添加 网络打印机可以自动搜索并识别。 win11 设置里 -这里改名字 -比如我是192.168.50.115

基于springboot+vue的汽车租赁管理系统

背景介绍: 网络发展的越来越迅速&#xff0c;它深刻的影响着每一个人生活的各个方面。每一种新型事务的兴起都是为了使人们的生活更加方便。汽车租赁管理系统是一种低成本、更加高效的电子商务方式&#xff0c;它已慢慢的成为一种全新的管理模式。人们不再满足于在互联网上浏览…

AutoCAD 2024 安装注册教程

前言 大家好&#xff0c;我是梁国庆。 本篇分享的安装包是 AutoCAD 的全新版本——AutoCAD 2024&#xff0c;下文安装教程中简称 AutoCAD。 时间&#xff1a;2024年4月8日。 获取 AutoCAD 安装包 我已将本篇所使用的安装包打包上传至百度云&#xff0c;扫描下方二维码关注…