欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 创投人物 > 【Qt】QWidget属性2

【Qt】QWidget属性2

2025/3/18 7:14:10 来源:https://blog.csdn.net/2303_79015671/article/details/146308709  浏览:    关键词:【Qt】QWidget属性2

🏠个人主页: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("我是一个按钮~");//设置按钮的cursorbutton->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的新属性,对于这些常见的属性大家可以好好记忆,对于不常见的属性,查文档就可以了~

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词