【Qt】QWidget属性2

news2025/3/24 19:46:42

🏠个人主页:Yui_
🍑操作环境:Qt Creator
🚀所属专栏:Qt

在这里插入图片描述

文章目录

  • 1. windowOpacity属性
  • 2. cursor属性
    • 2.1 自定义光标
  • 3. font属性
  • 4.tooltip属性
  • 5. focusPolicy属性
  • 6. 总结

由于QWidget的常见属性实在太多,不得不分为两篇文章,如果你没有看过上一篇关于QWidget属性的文章,还是推荐看一下。

1. windowOpacity属性

API说明
windowOpacity()获取到控件的不透明数值,返回float,取值范围(0.0,1.0)其中0.0表示全透明,1.0表示完全不透明。
setWindowOpacity()设置控件的不透明数值
下面我会编写一个程序,程序中有两个按钮,一个按钮会让窗口的透明度上升一个让窗口的透明度下降。
#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
}

Widget::~Widget()
{
    delete ui;
}


void Widget::on_pushButton_clicked()
{
    //透明度上升
    if(this->windowOpacity()>0)
    {
        this->setWindowOpacity(this->windowOpacity()-0.1);
    }
}

void Widget::on_pushButton_2_clicked()
{
    //透明度下降
    if(this->windowOpacity()<1)
    {
        this->setWindowOpacity(this->windowOpacity()+0.1);
    }
}

qwidget_6.gif

2. cursor属性

cursor的中文释义为光标,也就是我们的鼠标光标。

API说明
cursor()获取到当前widget的cursor属性,返回QCursor对象当鼠标悬停在该widget上时,就会显示出对应的形状。
setCursor(const QCursor& cursor)设置该widget光标的形状,仅在鼠标停留在该widget上时生效。
QGuiApplication::setOverrideCursor(const QCursor& cursor)设置全局光标的形状,对整个程序中的所有widget都会生效,会覆盖setCursor设置的内容。
这里有一个简单的示例:
image.png
拖动一个控件,编辑右侧的属性栏即可改变光标样式。
如果我们用代码写,就是这样:
#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(100,100);
    button ->move(200,200);
    button->setText("我是一个按钮~");
    //设置按钮的cursor
    button->setCursor(QCursor(Qt::WaitCursor));
}

Widget::~Widget()
{
    delete ui;
}

按住alt点击Qt::WaitCursor我们就可以看到系内置的光标了
image.png
除此之外,我们还可以自定义光标.

2.1 自定义光标

Qt自带的光标有限,我们也可以自己找图片,做成鼠标的光标。
2233.png
我们就以这张图片为光标吧,哔哩哔哩的看板娘(不知道是22还是33~)
依旧是创建Qrc文件
image.png

创建qrc文件成功,如果你不知道如何创建qrc文件,可以去看笔者上一篇介绍qrc的文章。

#include "widget.h"
#include "ui_widget.h"
#include <QPixmap>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    QPixmap pixmap(":/2233.png");//创建一个位图对象,加载自定义光标图片
    pixmap = pixmap.scaled(64,64);//缩放图片为64*64的尺寸
    //创建QCursor对象,并指定热点为(2,2)坐标位置
    //这里的热点就是鼠标点击时生效的位置
    QCursor cursor(pixmap,2,2);
    //设置光标
    this->setCursor(cursor);
}

Widget::~Widget()
{
    delete ui;
}


qwidget_7.gif

3. font属性

API说明
font()获取当前widget的字体信息,返回QFont对象
setFont(const QFont&font)设置当前widget的字体信息
关于QFont
属性说明
family字体家族.⽐如"楷体",“宋体”,"微软雅⿊"等.
pointSize字体⼤⼩
weight字体粗细.以数值⽅式表⽰粗细程度取值范围为[0,99],数值越⼤,越
粗.
bold是否加粗.设置为true,相当于weight为75.设置为alse相当于
weight为50.
italic是否倾斜
underline是否带有下划线
strikeOut是否带有删除线
我们用代码来演示下吧~
#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->setText("你好啊~");
    label->move(100,100);
    QFont font;
    font.setFamily("微软雅黑");//设置字体家族
    font.setPointSize(20);//设置字体大小
    font.setBold(true);//设置字体加粗
    font.setItalic(true);//设置字体倾斜
    font.setUnderline(true);//设置字体下划线
    font.setStrikeOut(true);//设置字体删除线
    label->setFont(font);//设置字体对象到label上
}

Widget::~Widget()
{
    delete ui;
}

image.png
在实际开发过程中字体的属性如何选择就不需要我们操心了,有专门的美工部门~

4.tooltip属性

API说明
setToolTip()设置toolTip鼠标悬停在该widget上时会有提示说明
setToolTipDuring设置toolTip提示的时间,单位ms时间到后toolTip自动消失
下面我们会实现一个程序,来看看效果:
#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    ui->pushButton->setToolTip("这是按钮1");
    ui->pushButton->setToolTipDuration(3000);
    ui->pushButton_2->setToolTip("这是按钮2");
    ui->pushButton_2->setToolTipDuration(300);
}

Widget::~Widget()
{
    delete ui;
}

qwidget_8.gif

5. focusPolicy属性

设置控件获取到焦点的策略,比如某个控件能否用鼠标选中或者能否通过tab键选中。
所谓“焦点”指的是能选中这个元素,接下来的操作(比如键盘操作)这都是针对该焦点元素进行的
这个对于输入框,单选框复选框等控件非常有用。
如果你玩过即时战略游戏,比如:魔兽争霸或者星际争霸等等,上面的事情就好比在这些游戏中先选中单位,在下达命令一样。

API说明
focusPolicy()获取该Widget的focusPolicy,放回Qt::FocusPilicy
setFocusPolicy(Qt::FocusPolicy policy)设置widget的focusPolicy
Qt::FocusPolicy是一个枚举类型,取值如下:
  • Qt::Nofocus:控件不会接收键盘焦点
  • Qt::TabFocus:控件可以通过Tab键接收焦点。
  • Qt::ClickFocus:控件在鼠标点击时接收焦点。
  • Qt::StrongFocus:控件可以通过Tab键和鼠标点击接收焦点。
  • Qt::WheelFocus:类似于Qt::StrongFocus同时控件也通过鼠标滚轮获取到焦点(新增选项,很少使用)。
    光看文字还是太抽象了,下面来用看演示吧~
    首先,我们双击formfile的ui文件,拖动4个按钮到中间的框内。
    image.png
    在右侧的属性栏找到该数据
    image.png

从上到下依次分别设置一下属性:
image.png
来看效果:
qwidget_9.gif
主要看黑色虚线框。
根据动图的效果我们可以得知,按钮1可以接受点击和tab键,按钮2什么都不接受,按钮3可以接受tab键,按钮4可以接受点击~
和上面设置一致~

6. 总结

本文我们又了解了许多QWidget的新属性,对于这些常见的属性大家可以好好记忆,对于不常见的属性,查文档就可以了~

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OpenGL ES ->乒乓缓冲,计算只用两个帧缓冲对象(Frame Buffer Object)+叠加多个滤镜作用后的Bitmap

乒乓缓冲核心思想 不使用乒乓缓冲&#xff0c;如果要每个滤镜作用下的绘制内容&#xff0c;也就是这个滤镜作用下的帧缓冲&#xff0c;需要创建一个Frame Buffer Object加上对应的Frame Buffer Object Texture使用乒乓缓冲&#xff0c;只用两个Frame Buffer Object加上对应的F…

数据库练习2

目录 1.向heros表中新增一列信息&#xff0c;添加一些约束&#xff0c;并尝试查询一些信息 2.课堂代码练习 3.题目如下 一、单表查询 1、显示所有职工的基本信息。 2、查询所有职工所属部门的部门号&#xff0c;不显示重复的部门号。 3、求出所有职工的人数。 4…

macOS Sequoia 15.3 一直弹出“xx正在访问你的屏幕”

&#x1f645; 问题描述 macOS 系统升级后&#xff08;15.2或者15.3均出现过此问题&#xff09;&#xff0c;不管是截图还是开腾讯会议&#xff0c;只要跟捕捉屏幕有关&#xff0c;都一直弹出这个选项&#xff0c;而且所有软件我都允许访问屏幕了&#xff0c;这个不是询问是否…

C# 调用 VITS,推理模型 将文字转wav音频调试 -数字人分支

Microsoft.ML.OnnxRuntime.OnnxRuntimeException: [ErrorCode:InvalidArgument] Input name: input_name is not in the metadata在 Microsoft.ML.OnnxRuntime.InferenceSession.LookupInputMetadata(String nodeName) 位置 D:\a\_work\1\s\csharp\src\Microsoft.ML.OnnxRuntim…

【Docker系列一】Docker 简介

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

C++进阶——封装红黑树实现map和set

目录 1、源码及框架分析 2、模拟实现map和set 2.1 复用的红黑树框架及Insert 2.2 iterator的实现 2.2.1 iterator的核心源码 2.2.2 iterator的实现思路 2.3 map支持[ ] 2.4 map和set的代码实现 2.4.1 MyMap.h 2.4.2 MySet.h 2.4.3 RBTree.h 2.4.4 Test.cpp 1、源码及…

‘闭包‘, ‘装饰器‘及其应用场景

‘闭包’, 装饰器’及其应用场景 一, 闭包及其应用场景 图解 闭包的定义 概述: 内部函数 使用了 外部函数 的变量, 这种写法就称之为闭包. 格式: def 外部函数名(形参列表):外部函数的(局部)变量def 内部函数名(形参列表):内部函数的(局部)变量return 内部函数名前提条件: …

IDEA 快捷键ctrl+shift+f 无法全局搜索内容的问题及解决办法

本篇文章主要讲解IDEA、phpStrom、webStrom、pyCharm等jetbrains系列编辑器无法进行全局搜索内容问题的主要原因及解决办法。 日期&#xff1a;2025年3月22日 作者&#xff1a;任聪聪 现象描述&#xff1a; 1.按下ctrlshiftf 输入法转为了繁体。 2.快捷键ctrlshiftr 可以全局检…

Powershell WSL导出导入ubuntu22.04.5子系统

导出Linux子系统 导出位置在C盘下,根据自己的实际情况更改即可Write-Host "export ubuntu22.04.5" -ForegroundColor Green wsl --export Ubuntu-22.04 c:\Ubuntu-22.04.tar 导入Linux子系统 好处是目录可用在任意磁盘路径,便于迁移不同的设备之间Write-Host &quo…

论文笔记(七十三)Gemini Robotics: Bringing AI into the Physical World

Gemini Robotics: Bringing AI into the Physical World 文章概括1. 引言2. Gemini 2.0的具身推理2.1. 具身推理问答&#xff08;ERQA&#xff09;基准测试2.2. Gemini 2.0的具身推理能力2.3. Gemini 2.0支持零样本和少样本机器人控制 3. 使用 Gemini Robotics 执行机器人动作3…

AI + 医疗 Qwq大模型离线本地应用

通义千问Qwq-32b-FP16可用于社区医院、乡镇卫生院、诊所等小型医疗机构&#xff0c;替代专业合理用药系统&#xff0c;作为药品知识库&#xff0c;实现以下功能&#xff1a; 药品信息智能查询&#xff1a;检索药品的详细说明书、适应症、禁忌症、不良反应及药物相互作用等关键信…

元音辅音及其字母组合发音

文章目录 单元音长元音/ɑː//ɔ://u://i://ɜː/// 短元音/ʌ//ɒ//ʊ//ɪ//ə//e/ 双元音/eɪ//aɪ//ɔɪ//ɪə//eə//ʊə//əʊ//aʊ/ 辅音3个鼻辅音m n ŋ 5个独立浊辅音w j r l h 20个清浊相对的辅音s zʃ ʒf vθ p bt dk gts dztʃ dʒtr dr 以下是列举的部分字母组合…

【Vitis AIE】FPGA图像处理 11 双线性插值 Bilinear Interpolation

双线性插值 https://github.com/Xilinx/Vitis-Tutorials/tree/2024.2/AI_Engine_Development/AIE/Design_Tutorials/11-Bilinear_Interpolation 简介 双线性插值是一种使用重复线性插值来插值两个变量函数的方法。它通常用于以下应用&#xff1a; 图像处理和计算机视觉&…

Linux | 安装 Samba将ubuntu 的存储空间指定为windows 上的一个磁盘

01 安装 samba 文件来实现。比如把我们 ubuntu 的存储空间指定为我们 windows 上的一个磁盘,然后我们在这个磁盘里面创建 .c 文件,进行我们代码的修改和编写,可以安装 samba 文件来实现。 samba 是一种网络共享服务,可以通过网络访问我们指定的文件夹 02 第一步:下…

一文说清预训练与微调:AI的双重训练法则

什么是预训练&#xff1f; 预训练是大型语言模型训练的第一步。它在资金和计算能力的支持下&#xff0c;通过深入分析大量的文本数据&#xff0c;使模型建立起语言的基本构架。在这一阶段&#xff0c;模型通过学习海量的书籍、文章和网页&#xff0c;识别出语言的语法、句法和…

996引擎-接口测试:音效测试NPC

996引擎-接口测试:音效测试NPC 参考资料local offset = 1 -- 默认偏移量function main(player, newOffset)offset = newOffset or offset -- 更新偏移量local buttonWidth =

miniconda安装保姆级教程|win11|深度学习环境配置

一、官网安装miniconda miniconda官网&#xff1a;Miniconda - Anaconda 点击Download按钮 在红框位置输入邮箱并点击submit&#xff0c;下载链接将会发到邮箱中 邮箱中将会收到如图所示邮件&#xff0c;点击下载 选择windows对应的miniconda安装包 miniconda安装包安装完成如…

Linux shell脚本-概述、语法定义、自定义变量、环境变量、预设变量、变量的特殊用法(转义字符、单双引号、大小括号)的验证

目录 1.shell概述 1.1作为应用程序&#xff1a; 1.2 shell 作为一门语言 2.shell 语法 2.1 shell脚本的定义与执行 &#xff08;1&#xff09;新建文件 &#xff08;2&#xff09;程序开头第一行 必须写shell的类型 &#xff08;3&#xff09;程序编写完后&#xff0c…

数据驱动进化:AI Agent如何重构手机交互范式?

如果说AIGC拉开了内容生成的序幕&#xff0c;那么AI Agent则标志着AI从“工具”向“助手”的跨越式进化。它不再是简单的问答机器&#xff0c;而是一个能够感知环境、规划任务并自主执行的智能体&#xff0c;更像是虚拟世界中的“全能员工”。 正如行业所热议的&#xff1a;“大…

DL学习笔记:穿戴设备上的轻量级人体活动识别方法

Hello&#xff0c;大家好&#xff01;这里是《Dream 的深度学习笔记》,本系列将聚焦三个学习方面&#xff1a; 论文解读&#xff1a;拆解经典论文与最新突破 技术实现&#xff1a;从模型搭建到实际部署 应用案例&#xff1a;涵盖图像识别、深度学习、人工智能等热门方向 让…