前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >【Qt】QWidget属性2

【Qt】QWidget属性2

作者头像
Yui_
发布2025-03-18 12:45:19
发布2025-03-18 12:45:19
5200
代码可运行
举报
文章被收录于专栏:Yui编程知识Yui编程知识
运行总次数:0
代码可运行

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

1. windowOpacity属性

API

说明

windowOpacity()

获取到控件的不透明数值,返回float,取值范围(0.0,1.0)其中0.0表示全透明,1.0表示完全不透明。

setWindowOpacity()

设置控件的不透明数值

下面我会编写一个程序,程序中有两个按钮,一个按钮会让窗口的透明度上升一个让窗口的透明度下降。

代码语言:javascript
代码运行次数:0
运行
复制
#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
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
image.png
代码语言:javascript
代码运行次数:0
运行
复制
#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
image.png

除此之外,我们还可以自定义光标.

2.1 自定义光标

Qt自带的光标有限,我们也可以自己找图片,做成鼠标的光标。

2233.png
2233.png

我们就以这张图片为光标吧,哔哩哔哩的看板娘(不知道是22还是33~) 依旧是创建Qrc文件

image.png
image.png

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

代码语言:javascript
代码运行次数:0
运行
复制
#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
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

是否带有删除线

我们用代码来演示下吧~

代码语言:javascript
代码运行次数:0
运行
复制
#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
image.png

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

4.tooltip属性

API

说明

setToolTip()

设置toolTip鼠标悬停在该widget上时会有提示说明

setToolTipDuring

设置toolTip提示的时间,单位ms时间到后toolTip自动消失

下面我们会实现一个程序,来看看效果:

代码语言:javascript
代码运行次数:0
运行
复制
#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
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
image.png

从上到下依次分别设置一下属性:

image.png
image.png

来看效果:

qwidget_9.gif
qwidget_9.gif

主要看黑色虚线框。 根据动图的效果我们可以得知,按钮1可以接受点击和tab键,按钮2什么都不接受,按钮3可以接受tab键,按钮4可以接受点击~ 和上面设置一致~

6. 总结

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-03-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. windowOpacity属性
  • 2. cursor属性
    • 2.1 自定义光标
  • 3. font属性
  • 4.tooltip属性
  • 5. focusPolicy属性
  • 6. 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档