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

详解Qt字体设置 (QFont) 简述 QFont字体设置无非就是设置下面一些参数: QFont常用属性 setFamily 设置字体 setPixelSize 设置字体像素大小 setBold 字体加粗 setItalic 斜体 setPointSize 设置字体大小 setOverline 上划线 setUnderline 下划线 setStrikeOut 删除线 设置字体大小和像素大小的区别 setPixelSize()函数使用像素作为单位来设置字体大小 setPointSize()函数规定了实际中我们肉眼看到的字 阅读详情

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);
    //设置这两个按钮的toolTips
    ui->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]]

QT字体详解 首先看看QT官方的帮助文档: QFont类指定用于图形文本的字体。 创建QFont对象时,您可以指定希望字体具有的各种属性。Qt将使用具有指定属性的字体,或者如果不存在匹配字体,Qt将使用最接近的匹配安装字体。实际使用的字体属性可从QFontInfo对象中检索。如果窗口系统提供精确匹配,则exactMatch ( )返回true。使用QFontMetrics获取度量值,例如使用QFon... 阅读详情

相关推荐

科研指南:IEEE期刊LaTeX/Word模板下载与使用全解析

本文详细解析了IEEE期刊LaTeX/Word模板的下载与使用技巧,帮助科研人员高效完成论文排版。从官方模板获取入口到LaTeX文档结构配置,再到Word样式管理与常见问题解决方案,全面覆盖投稿准备的关键步骤。特别针对数学公式、参考文献和图片处理等难点提供实用建议,助力学术写作规范化。

weixin_28396629的博客 566

Qt中焦点策略FocusPolicy的使用

Qt中焦点策略FocusPolicy的使用 enum Qt::FocusPolicy This enum type defines the various policies a widget can have with respect to acquiring keyboard focus. 枚举类型定义了小部件在获取键盘焦点方面可以具有的各种策略。 Constant ...

《好好先生》专栏 5812

用 Python 和 uiautomation 实现微信批量发送

思路是这样,将要发送的人员名单(包括称呼)以及发送内容都维护到Excel里,程序运行时读取Excel里内容,自动搜索人员姓名(微信昵称或备注名),填入要发送的内容,拼接上称呼(如果需要的话)自动点击发送,这样轮巡直至名单人员全部发送完成。、

jankingdom的专栏 1471

基于QWidget新建的工程,直接使用this->setstylesheet设置backgournd-image,border-image,image会失效

再设置setStyleSheet就可以设置成功。

the growth of Nick 594

Diffusion Model原理详解

Diffusion Model(扩散模型 )对标的是生成对抗网络(GAN),本文将用通俗的语言和公式为大家介绍Diffusion Model,并且结合公式为大家梳理Diffusion Model的代码。

weixin_42620109的博客 6098

GhidrAssist:AI驱动的逆向工程助手实战指南

逆向工程是分析软件内部工作原理、理解二进制代码逻辑的关键技术,广泛应用于软件安全、恶意代码分析和漏洞挖掘等领域。其核心原理在于通过反编译、控制流与数据流分析等手段,将机器码还原为可理解的高级语言表示。传统逆向分析高度依赖人工经验,面对海量代码时效率低下且易出错。随着大语言模型(LLM)技术的发展,其强大的代码理解与推理能力为自动化逆向分析提供了新的可能。通过将LLM与成熟的逆向工程框架(如Ghidra)相结合,可以构建智能辅助系统,实现代码意图的自动解释、变量/函数的智能重命名以及潜在漏洞模式的辅助识别,从

weixin_42547335的博客 596

QT样式表,setstylesheet,控件使用图片

Qt的控件样式可以通过多种方法进行设置 1、UI设置 在Qt的设计页面,右键控件即可弹出菜单,选择改变样式表,如图 在弹出的样式表编辑框中,可以对样式表进行各种修改 还可以在控件属性栏进行设置样式表:字体、大小等 2、代码设置样式表 以按钮为例,介绍代码设置样式表,需要包含头文件QStylesheet //设置全局样式表使用this,按钮正常态、悬...

左霖风的博客 7165

手把手教你学Simulink--单相逆变器模糊逻辑控制策略仿真

本文介绍了在Simulink中设计单相逆变器模糊逻辑控制策略的完整流程。主要包括:1)构建单相逆变器模型;2)使用FuzzyLogicToolbox设计模糊控制器,定义输入输出变量和模糊规则;3)将控制器集成到Simulink模型;4)添加干扰源和示波器;5)配置仿真参数并分析结果。该方法利用模糊控制处理非线性系统的优势,可实现输出电压的精确跟踪,具有良好的鲁棒性。文中提供了详细的步骤说明和示例代码,强调准确设计隶属函数和规则库对控制性能的关键作用。该仿真设计为电力电子控制系统的开发提供了有效支持。

MHD0815的博客 200

【Qt】样式表的使用——设置样式的方法

Qt 之 样式表的使用——设置样式的方法一、简述二、开始总结1、先谈谈我们设置样式有几种方法(a)、最简单,也是最直接——在Qt Designer 中添加样式(b)、在代码中添加样式(c)、将样式写在文件中,通过读取文件的方式设置样式2、再谈谈这几种设置样式方法的优缺点(a)、最简单,也是最直接——在Qt Designer 中添加样式(b)、在代码中添加样式(c)、将样式写在文件中,通过读取文件的方式设置样式个人建议常见样式 一、简述 我们通常在使用Qt开发的过程中都会使用样式表来美化我们的界面,关于如何使

weixin_41838721的博客 5455

【零基础学习CAPL】——CAN报文的发送(CRC——ChecSum值)

本章主要介绍带有CRC值的报文发送一般报文可使用CANoe的IG模块直接发送,但带有CRC值的报文就只能编写脚本进行发送,以下详细讲解在配合Panel面板情况下,如何进行带有循环冗余码的报文进行报文的发送。

LOVE135149的博客 1913

华为OD机试:查找接口成功率最优时间段 (C/C++/Py/Java/JS/GO)

华为OD机试双机位C卷 查找接口成功率最优时间段,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解。

qq_45776114的博客 4687

Qt常见控件属性使用方法(enable、geometry、QIcon、qrc、opacity、cursor、font、focusPolicy、sizePolicy)

这里我们使用QPixmap类型作为图片存储类型,我们的图片,多少会有一点大,Qt 提供了通过QPixmap成员函数来设置图片的缩放比例。鼠标的中心位置相较于图片的位置也是可以设置的,默认情况下是图片的正中心,使用cursor()设置时,它是根据图片左上角为原点进行偏移的。

laimaxgg 1858

C++ Qt6 QtQuick/QML入门进阶与项目实战视频教程

C++ Qt这些年在PC客户端、嵌入式、汽车座舱仪表等领域应用很广泛,例如剪映专业版、微信4.0、亿图脑图、Steam、美图秀秀、腾讯会议、钉钉(部分模块)等都是使用C++ QWidget/QML开发。特别是QML这种声明式UI开发更加快捷,QML的界面开发效率相对于QWidget更快速,界面效果更好,QtQuick/QML在Qt6版本也逐渐完善了,使用QML进行客户端开发是个不错的选择。

琅嬛福地 4487

006 Qt常用控件Qwidget_下

本文将会向你分享Qwidget的常见属性。

Moonnight_bit的博客 910

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

【QT】常用控件(一):初识控件,熟悉QWidget

Widget是Qt中的核心概念。英文原义是“小部件”,我们此处也把它翻译为“控件”。控件是构成一个图形化界面的基本要素。按钮、列表视图、树形视图、单行输入框、多行输入框、滚动条、下拉框等,都可以称为“控件”。Qt作为一个成熟的GUI开发框架,内置了大量的常用控件。这一点在中就可以看到端倪。并且Qt也提供了“自定义控件”的能力,可以让程序猿在现有控件不能满足需求的时候,对现有控件做出扩展,或者手搓出新的控件。综上,学习Qt,其中一个很重要的任务就是熟悉并掌握Qt内置的常用控件。

艾莉丝努力练剑的博客,感谢大家一直以来的对艾莉丝的支持和鼓励,uu们如果对C/C++方向感兴趣的话,可以通过艾莉丝主页的微信名片加艾莉丝的好友,和努力练剑的艾莉丝一起加油! 648

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【Qt】控件概述 (1)—— Widget属性

qt的控件API使用方法

qq_74276498的博客 1727

QT常用控件--QWidget

本文介绍了Qt中QWidget控件的enable属性和geometry属性的使用方法。enable属性控制控件的可用状态,通过setEnabled()设置,禁用时控件无法接收输入事件且外观变灰。geometry属性获取和设置控件的位置与尺寸,包含x、y坐标及宽高。文章还通过代码示例演示了如何动态切换按钮状态,以及使用方向按钮控制目标按钮移动。最后解释了windowframe对坐标计算的影响,区分了包含与不包含windowframe的不同API。

Giggins GaoBlog 965

Qt入门指南:控件基础与核心属性全解析

Qt作为一个成熟的跨平台C++图形用户界面应用程序开发框架,因其丰富的控件库和高效的开发流程而广受开发者喜爱。无论你是刚接触GUI开发的新手,还是有一定经验的程序员,掌握Qt的常用控件都是构建美观、实用界面的关键。本文将带你系统学习Qt中最常用的控件及其核心属性,并通过丰富的代码示例帮助你快速上手。

好好学习,天天向上 4654

QT C++(QWidget类及其常见的属性)

Window Frame对geometry属性的影响:QT关于位置尺寸提供很多API,有的API位置信息是Widget本体坐上角为原点的(不考虑Window Frame即窗口边框)上述的API都是不考虑Window Frame的。Qt通过自定义图片设定光标:和设置窗口图标方式一致,把图片导入项目中(.qrc管理),在代码处访问到这个图片,通过这个图片构造光标对象并设置。cursor():获取到当前窗口的光标属性,返回QCursor对象,当光标悬停到该窗口上时会显示对应的形状。

dodamce的博客 1306

Qt开发入门:从零到跨平台GUI低手

Qt开发入门:从零到跨平台GUI低手

Yusei_0523的博客 551

QT 文字属性 QFont 字体样式 字体、字号、像素、加粗、字间距、首字母大写等

文字属性对话框 QFont ft; bool enable = false;//定义bool型输出变量 ft = QFontDialog::getFont(&enable,QFont(QStringLiteral("宋体"),20,QFont::Bold),this,QStringLiteral("自定义文字属性")); //调用文字属性设置变量,传输输入变量enable用于保存是否点击了ok按钮,第二个参数为文字属性对话框默认值 设置字间距% / 像素值 //设置字间距像素值 ft.s

weixin_46087795的博客 1万+

Qt 之字体设置(QFont)详解

简述 QFont字体设置无非就是设置下面一些参数: QFont常用属性 函数 描述 setFamily 设置字体 setPixelSize 设置字体像素大小 setBold 字体加粗 setI...

Carry_Qt的博客 6万+

setStyleSheet来设置图形界面的外观

来自:http://www.360doc.com/content/11/1122/10/7899729_166398154.shtml 使用setStyleSheet来设置图形界面的外观: QT Style Sheets是一个很有利的工具,允许定制窗口的外观, 此外还可以用子类QStyle来完成,他的语法很大比重来源于html的CSS,但是适用于窗口 概括: Style Sheets

yongan1006的专栏 5万+

Qt编程17:QFont文字属性设置(简单使用)

通过QFont可以部分Qt控件的文字的大小、字体、

jhe_zhang-blog 7万+

Qt::FocusPolicy的使用

想在qt中实现的效果:         一个QWidget窗口中间,有多个子窗口,选中每个窗口,每个窗口边框变色,代表选中该子窗口。 如下效果,点击某个子窗口:   前提:介绍一下Qt的聚焦策略  enum Qt::FocusPolicy This enum type defines the various policies a widget can have

imxiangzi的专栏 1万+
上一篇: 6.QT-常用控件-QWidget|windowTitle|windowIcon|qrc机制|windowOpacity|cursor(C++)
下一篇: NO98十六届蓝桥杯备战|数论板块-质数|质数和合数|试除法|质数筛|埃氏筛|线性筛|线性筛素数|素数密度|Goldbach‘s Conjecture(C++)
ChoSeitaku
博客等级 码龄5年 3452粉丝 557原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值