7.QT-常用控件-QWidget|font|toolTip|focusPolicy|styleSheet(C++)

font

API说明
font()获取当前widget的字体信息.返回QFont对象.
setFont(const QFont& font)设置当前widget的字体信息.
属性说明
family字体家族.⽐如"楷体",“宋体”,"微软雅⿊"等.
pointSize字体⼤⼩
weight字体粗细.以数值⽅式表⽰粗细程度取值范围为[0,99],数值越⼤,越粗.
bold是否加粗.设置为true,相当于weight为75.设置为false相当于weight为50.
italic是否倾斜
underline是否带有下划线
strikeOut是否带有删除线
代码⽰例:在Qt Designer中设置字体属性

1)在界⾯上创建⼀个label
![[Pasted image 20250419105315.png]]

2)在右侧的属性编辑区,设置该label的font相关属性
在这⾥调整上述属性,可以实时的看到⽂字的变化.
![[Pasted image 20250419105403.png]]

3)执⾏程序,观察效果
![[Pasted image 20250419105811.png]]

通过属性编辑这样的方式,虽然能够快速方便的修改文字相关的属性,但是还不够灵活如果程序运行过程中,需要修改文字相关的属性~~就需要通过代码来操作了.

代码⽰例:在代码中设置字体属性
#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("这是一段文本");//创建字体对象QFont font;font.setFamily("仿宋");font.setPixelSize(30);font.setBold(true);font.setItalic(true);font.setUnderline(true);font.setStrikeOut(true);//把font对象设置到label中label->setFont(font);
}Widget::~Widget()
{delete ui;
}

![[Pasted image 20250419110416.png]]

toolTip

API说明
setToolTip设置toolTip.
⿏标悬停在该widget上时会有提⽰说明.
setToolTipDuring设置toolTip提⽰的时间.单位ms.
时间到后toolTip⾃动消失.

toolTip只是给⽤⼾看的.在代码中⼀般不需要获取到toolTip.

代码⽰例:设置按钮的toolTip

1)在界⾯上拖放两个按钮. objectName 设置为 pushButton_yes 和 pushButton_no
![[Pasted image 20250419121219.png]]

2)编写widget.cpp

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//设置这两个按钮的toolTipsui->pushButton_yes->setToolTip("这是一个yes按钮");ui->pushButton_yes->setToolTipDuration(3000);ui->pushButton_no->setToolTip("这是一个no按钮");ui->pushButton_no->setToolTipDuration(7000);
}Widget::~Widget()
{delete ui;
}

msec=>毫秒 sec =>秒
usec =>微秒
1s = 1000 ms 1ms = 1000 us
国际单位制 (1000来换算的)
3)运⾏程序,观察效果
可以看到⿏标停到按钮上之后,就能弹出提⽰.时间到后⾃⾏消失.
![[Pasted image 20250419124814.png]]

focusPolicy

设置控件获取到焦点的策略.⽐如某个控件能否⽤⿏标选中或者能否通过tab键选中.

API说明
focusPolicy()获取该widget的focusPolicy,返回Qt::FocusPolicy
setFocusPolicy(Qt::FocusPolicy policy)设置widget的focusPolicy.
Qt::FocusPolicy 是⼀个枚举类型.取值如下
  • Qt::NoFocus :控件不会接收键盘焦点
  • Qt::TabFocus :控件可以通过Tab键接收焦点
  • Qt::ClickFocus :控件在⿏标点击时接收焦点
  • Qt::StrongFocus :控件可以通过Tab键和⿏标点击接收焦点(默认值)
  • Qt::WheelFocus : 类似于 Qt::StrongFocus ,同时控件也通过⿏标滚轮获取到焦点(新增
    的选项,⼀般很少使⽤).
代码⽰例:理解不同的focusPolicy

1)在界⾯上创建四个单⾏输⼊框(Line Edit)
![[Pasted image 20250419131551.png]]

2)修改四个输⼊框的 focusPolicy 属性为 Qt::StrongFocus (默认取值,⼀般不⽤额外修改)
可以通过tab和鼠标点击切换输入框
3)修改第⼆个输⼊框的 focusPolicy 为 Qt::NoFocus ,则第⼆个输⼊框不会被tab/⿏标左键选中.
![[Pasted image 20250419132148.png]]

此时这个输⼊框也就⽆法输⼊内容了.
4)修改第⼆个输⼊框 focusPolicy 为 Qt::TabFocus ,则只能通过tab选中,⽆法通过⿏标选中.
5)修改第⼆个输⼊框 focusPolicy 为 Qt::ClickFocus ,则只能通过鼠标选中,⽆法通过tab选中.
![[Pasted image 20250419132506.png]]

styleSheet

通过CSS设置widget的样式.
CSS(Cascading Style Sheets层叠样式表)本⾝属于⽹⻚前端技术.主要就是⽤来描述界⾯的样式.
所谓"样式",包括不限于⼤⼩,位置,颜⾊,间距,字体,背景,边框等.
我们平时看到的丰富多彩的⽹⻚,就都会⽤到⼤量的CSS.
Qt虽然是做GUI开发,但实际上和⽹⻚前端有很多异曲同⼯之处.因此Qt也引⼊了对于CSS的⽀持.
CSS中可以设置的样式属性⾮常多.基于这些属性Qt只能⽀持其中⼀部分,称为QSS(Qt Style Sheet).具体的⽀持情况可以参考Qt⽂档中"Qt Style Sheets Reference"章节.此处只是进⾏⼀个简单的演⽰.

代码⽰例:设置⽂本样式

1)在界⾯上创建label
![[Pasted image 20250419135254.png]]

2)编辑右侧的styleSheet属性,设置样式
![[Pasted image 20250419135234.png]]

有三个点的按钮,或者右键点击label打开样式表
![[Pasted image 20250419135413.png]]

![[Pasted image 20250419135556.png]]

font-family: '微软雅黑';
font-size: 30px;
font-style: italic;
color: green;

此处的语法格式同CSS,使⽤键值对的⽅式设置样式.其中键和值之间使⽤ : 分割.键值对之间使⽤; 分割.
另外,Qt Designer只能对样式的基本格式进⾏校验,不能检测出哪些样式不被Qt⽀持.⽐如 textalign: center 这样的⽂本居中操作,就⽆法⽀持.
编辑完成样式之后,可以看到在Qt Designer中能够实时预览出效果.
![[Pasted image 20250419135818.png]]

3)运⾏程序,可以看到实际效果和预览效果基本⼀致.
![[Pasted image 20250419140039.png]]

代码⽰例:实现切换夜间模式.

1)在界⾯上创建⼀个多⾏输⼊框(Text Edit)和两个按钮.
objectName 分别为 pushButton_light 和 pushButton_dark
![[Pasted image 20250419141718.png]]

2)编写按钮的slot函数.

void Widget::on_pushButton_light_clicked()
{//设置窗口的样式this->setStyleSheet("background-color: white;");//设置输入框的样式ui->textEdit->setStyleSheet("background-color: white; color: black;");//设置按钮的样式ui->pushButton_light->setStyleSheet("color: black;");ui->pushButton_dark->setStyleSheet("color: black;");
}void Widget::on_pushButton_dark_clicked()
{//设置窗口的样式this->setStyleSheet("background-color: black;");//设置输入框的样式ui->textEdit->setStyleSheet("background-color: black; color: white;");//设置按钮的样式ui->pushButton_light->setStyleSheet("color: white;");ui->pushButton_dark->setStyleSheet("color: white;");
}

![[Pasted image 20250419142658.png]]

![[Pasted image 20250419142703.png]]

  • #333 是深⾊,但是没那么⿊.
  • #fff 是纯⽩⾊.
  • #000 是纯⿊⾊.
    在线调色板,调色板工具—在线工具
    关于计算机中的颜⾊表⽰
    计算机中使⽤"像素"表⽰屏幕上的⼀个基本单位(也就是⼀个发亮的光点).
    每个光点都使⽤三个字节表⽰颜⾊,分别是R(red),G(green),B(blue)⼀个字节表⽰(取值范围是0-255,或者0x00-0xFF).
    混合三种不同颜⾊的数值⽐例,就能搭配出千千万万的颜⾊出来.
  • rgb(255, 0, 0) 或者 #FF0000 或者 #F00 表⽰纯红⾊.
  • rgb(0, 255, 0) 或者 #00FF00 或者 #0F0 表⽰纯绿⾊.
  • rgb(0, 0, 255) 或者 #0000FF 或者 #00F 表⽰纯蓝⾊.
  • rgb(255, 255, 255) 或者 #FFFFFF 或者 #FFF 表⽰纯⽩⾊.
  • rgb(0, 0, 0) 或者 #000000 或者 #000 表⽰纯⿊⾊.
    当然,上述规则只是针对⼀般的程序⽽⾔是这么设定的.实际的显⽰器,可能有8bit⾊深或者10bit⾊深等,实际情况会更加复杂
void Widget::on_pushButton_light_clicked()
{//设置窗口的样式this->setStyleSheet("background-color: #f3f3f3;");//设置输入框的样式ui->textEdit->setStyleSheet("background-color: #fff; color: black;");//设置按钮的样式ui->pushButton_light->setStyleSheet("color: black;");ui->pushButton_dark->setStyleSheet("color: black;");
}void Widget::on_pushButton_dark_clicked()
{//设置窗口的样式this->setStyleSheet("background-color: #333;");//设置输入框的样式ui->textEdit->setStyleSheet("background-color: #333; color: #fff;");//设置按钮的样式ui->pushButton_light->setStyleSheet("color: white;");ui->pushButton_dark->setStyleSheet("color: white;");
}

![[Pasted image 20250419145223.png]]

![[Pasted image 20250419145229.png]]

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

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

相关文章

通过面向目标的奖励弥合人与机器人的灵活性差距

24年10月来自纽约大学的论文“Bridging the Human to Robot Dexterity Gap through Object-Oriented Rewards”。 直接通过人类视频训练机器人是机器人技术和计算机视觉领域的一个新兴领域。尽管双指机械手在双指夹持器方面取得了显著进展&#xff0c;但以这种方式让多指机械手…

C++入门篇(下)

目录 1、引用 1.1 引用概念 1.2 引用特性 1.3 常引用 1.4 使用场景 1.4.1 引用做参数 1.4.2 引用做返回值 1.5 引用和指针的区别 2、内联函数 2.1 概念 2.2 特性 3、auto关键字 4、基于范围的for循环 5、指针空值nullptr 5.1 C98 中的指针空值处理 5.2 C11 …

Multi-Query Attention (MQA) PyTorch 实现

和多头注意力机制的唯一区别&#xff1a;K、V在不同的head之间实现了复用&#xff0c;而对于不同的头&#xff0c;Q依然不同。 因此这里的代码和标准多头注意力的实现也是几乎完全一样&#xff1a; import torch import torch.nn as nn import torch.nn.functional as Fclass…

visual studio无法跳转到函数定义、变量定义、跳转函数位置不准问题解决

参考&#xff1a;https://blog.csdn.net/snakehacker/article/details/135438353 程序有时会出现大部分函数都不能准确的从头文件中正确定位到函数定位,这是因为数据库错乱造成的,可以通过重构数据库来解决,操作方法如下&#xff1a; 菜单栏&#xff1a;工具——选项 文本编辑…

Java优雅实现判空方法

在 Java 开发中&#xff0c;频繁的 if (obj ! null) 判空代码会导致代码冗余、可读性差&#xff0c;且容易遗漏判空导致 NullPointerException。以下从 语言特性、设计模式、工具类 和 编码规范 四个维度&#xff0c;结合实际案例&#xff0c;详解如何优雅处理空值问题。 一、…

京东百亿补贴杀入外卖市场:一场关乎即时零售未来的攻防战

当美团和饿了么在外卖市场双雄争霸十余年之际&#xff0c;京东突然以"百亿补贴免佣金"的组合拳高调入场。这场看似跨界的外卖大战&#xff0c;实则是互联网巨头对万亿级即时零售市场的生死争夺。 外卖只是表象&#xff0c;即时零售才是终极战场 京东黑板报4月10日官…

UNION和UNION ALL的主要区别

UNION和UNION ALL的主要区别在于处理重复数据和排序的方式。 UNION和UNION ALL都是SQL语言中用于合并两个或多个SELECT语句结果集的关键字。它们的主要区别如下&#xff1a; 1、对重复结果的处理&#xff1a;UNION在进行表链接后会筛选掉重复的记录&#xff0c;而UNION ALL不会…

七段码 路径压缩 并查集 dfs

12.七段码 - 蓝桥云课 将七个二极管映射为 1-7 开一个二维矩阵 为 相邻的边连上线 edge[1][2] edge[1][6] 1;edge[2][1] edge[2][3] edge[2][7] 1;edge[3][2] edge[3][4] edge[3][7] 1;edge[4][3] edge[4][5] 1;edge[5][4] edge[5][6] edge[5][7] 1;edge[6][1…

科技如何改变世界?

技术是我们日常生活中不可或缺的一部分&#xff0c;以至于我们常常忘记了它的重要性。如果你正在科技领域工作&#xff0c;或者希望进入该领域&#xff0c;你可能是众多有使命感的人之一&#xff0c;希望知道自己的日常工作能为社会或地球的长远利益做出贡献。 别再四处寻找了…

抽象的https原理简介

前言 小明和小美是一对好朋友&#xff0c;他们分隔两地&#xff0c;平时经常写信沟通&#xff0c;但是偶然被小明发现他回给小美的信好像被人拆开看过&#xff0c;甚至偷偷被篡改过。 对称加密算法 开头的通信过程比较像HTTP服务器与客户端的通信过程&#xff0c;全明文传输…

高级java每日一道面试题-2025年4月13日-微服务篇[Nacos篇]-Nacos如何处理网络分区情况下的服务可用性问题?

如果有遗漏,评论区告诉我进行补充 面试官: Nacos如何处理网络分区情况下的服务可用性问题&#xff1f; 我回答: 在讨论 Nacos 如何处理网络分区情况下的服务可用性问题时&#xff0c;我们需要深入理解 CAP 理论以及 Nacos 在这方面的设计选择。Nacos 允许用户根据具体的应用…

python解压文件 zip tar.gz tar.xz

以下代码为解压zip包 tar包文件 zip_path&#xff1a;文件绝对路径 output_folder&#xff1a;文件解压后存放的文件夹路径 def extract_file(zip_path, output_folder):# 支持解压zip tar tar.gz tar.xz .tar.bz2# 确保输出文件夹存在os.makedirs(output_folder, exist_okT…

网络基础(协议,地址,OSI模型、Socket编程......)

目录 一、计算机网络发展 二、协议 1.认识协议 2.OSI七层模型 3.TCP/IP 五层(或四层)模型 4.协议本质 三、网络传输流程 1.MAC地址 2.协议栈 3.IP地址 IP地址 vs MAC地址 1. 核心区别 2. 具体通信过程类比 3. 关键总结 为什么需要两者&#xff1f; 4.协议栈图解…

生成式AI对话中提示词策略:明确问题、明确目标和提供背景信息是最有效的策略

生成式AI对话中提示词策略:明确问题、明确目标和提供背景信息是最有效的策略 最有效的提示词策略包括明确问题、明确目标和提供背景信息。普适性有效提示词策略可分为三类:明确需求与精确指引型、清晰解释与逻辑排序型、拆解任务与多样化表达型。[局限]数据来源于中国用户,…

AtCoder ABC402 ABCD

A - CBC 把大写字母按顺序连起来 B - Restaurant Queue 一眼队列&#xff0c;stl模拟就行 C - Dislike Foods 显然&#xff0c;每次克服暴力枚举每个菜肴会超时。 然而题目中给了每个菜肴的配菜个数&#xff0c;不妨换过来统计每个配菜用在了哪些菜肴。每次克服时&#x…

Transformer 架构 - 解码器 (Transformer Architecture - Decoder)

欢迎回到我们的 Transformer 系列教程!在上一篇中,我们详细探讨了 Transformer 的编码器,它负责将输入的源序列(比如源语言句子)转换为一系列包含丰富上下文信息的向量表示。 现在,我们将把目光投向 Transformer 的另一半——解码器 (Decoder)。解码器负责接收编码器的输…

神经网络与模型训练过程笔记

1.专有名词 ANN 人工神经网络&#xff0c;一种受生物神经元启发的监督学习算法。输入数据通过网络中的层级函数传递&#xff0c;激活特定神经元。函数复杂度越高&#xff0c;模型对数据的拟合能力越强&#xff0c;预测精度越高。 偏置项 其中x下表从1开始的是输入变量&#xf…

【计算机网络 | 第二篇】常见的通信协议(一)

HTTP和HTTPS有什么区别&#xff1f; 端口号&#xff1a;HTTP默认是80端口&#xff0c;HTTPS默认是443。 URL前缀&#xff1a;HTTPHTTP 的 URL 前缀是 http://&#xff0c;HTTPS 的 URL 前缀是 https://。 安全性和资源消耗&#xff1a;HTTP协议运行在TCP上&#xff0c;都是明…

【python实用小脚本系列】用 Python 自己手搓一个给视频“静音”的小脚本,批量处理,轻松高效制作“无声电影”!

嘿&#xff0c;小伙伴们&#xff01;今天我来给大家介绍一个超实用的 Python 小工具——一个能给视频“静音”的“声音消除器”&#xff01;是不是听起来很酷&#xff1f;想象一下&#xff0c;你可以把任何有声视频变成无声视频&#xff0c;是不是很有趣&#xff1f;接下来&…

【gpt生成-总览】怎样才算开发了一门编程语言,需要通过什么测试

开发一门真正的编程语言需要经历完整的设计、实现和验证过程&#xff0c;并通过系统的测试体系验证其完备性。以下是分阶段开发标准及测试方法&#xff1a; 一、语言开发核心阶段 1. 语言规范设计&#xff08;ISO/IEC 标准级别&#xff09; ​​语法规范​​&#xff1a;BNF/…