【Qt记录】属性 Q_PROPERTY
创始人
2024-03-16 14:16:28
0

使用:

Qt 拥有一个属性系统。我经常在QSS中使用

QWidget#SWNotifyMsgDialog QLabel#label_sure[status="normal"]

配合在代码中使用

ui.label_sure->setProperty("status","warning");
函数原型:bool QObject:setProperty(const char *name,const QVariant &value)

设置label的QSS样式。以上其实就是Qt属性系统的一种使用方式。

具体了解:

但是,Qt 属性系统从 setProperty() 这个函数就可以看出,其类似一个 key-value 的键值对。
并且,setProperty() 可以配置 property() 来使用。前一个是设置属性,后一个是获取属性。

ui.label_sure->property("status").toString();
函数原型:QVariant QObject::property(const char *name)const

通过设置属性和获取属性可以增强编码的便捷性。

举个例子:我通过设置 “status” 属性,获取当前某控件的状态。至少节省了一个变量,两中状态的设置。

自定义控件

如果我想要更改QLineEdit控件里闪烁插入光标的颜色与样式,原本默认不支持该设置,只能使用自定义控件,将光标和绘制上去。并且,我希望我可以使用 qss 样式来控制。

使用 Q_PROPERTY 宏,就可以达到目的。

class CodeLineEdit : public QLineEdit
{QOBJECTQPROPERTY(QColor caretColor READ caretColor WRITE setCaretColor DESIGNABLE true)Q_PROPERTY(int caretwidth READ caretwidth WRITE setCaretwidth DESIGNABLE true)
}

括号中依次是:类型,变量名,READ,读这个值的函数名(一般就是变量名),WRITE,写这个值的函数名(一般是set+变量名)。后面的可以省略。

  1. 有了这个 Q_PROPERTY 宏,就可以也就可以使用 setProperty() 来设置这个值。
  2. 还可以在 Qt Designer 中的属性编辑器中使用。点击图标可以创建动态属性
    在这里插入图片描述
    属性名称与类型,必须与定义的一致。
    在这里插入图片描述
    之后在属性编辑器中就会出现
    请添加图片描述
    使用这个,就与上面的默认属性是一样的。
    3)还可以在QSS中使用 qproperty- 来添加样式。
    请添加图片描述

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...