Qt自定义属性Q_PROPERTY不显示float类型如何解决
导读:本文共1246字符,通常情况下阅读需要4分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要:希望大家仔细阅读,能够学有所成!Qt 自定义属性Q_PROPERTY不显示float类型最近在学习编写自定义控件,其中使用到Q_PROPERTY来设置自定义属性。查阅资料可以知道,Q_PROPERTY支持的类型可以是QVariant支持的任一类型,又或者是我们自定义的类型,其他是可选的。设置完之后,会在调用自定义控件的时候,在属性编辑表里看到我们的属性。如下图但是,今天在使用中发现,少了两个自定义... ...
目录
(为您整理了一些要点),点击可以直达。希望大家仔细阅读,能够学有所成!
Qt 自定义属性Q_PROPERTY不显示float类型
最近在学习编写自定义控件,其中使用到Q_PROPERTY来设置自定义属性。
查阅资料可以知道,Q_PROPERTY支持的类型可以是QVariant支持的任一类型,又或者是我们自定义的类型,其他是可选的。设置完之后,会在调用自定义控件的时候,在属性编辑表里看到我们的属性。如下图
但是,今天在使用中发现,少了两个自定义属性min和max,于是查找原因。
后来发现属性表显示的数字类型只有两种:int和double(例如spin box和double spin box),无法显示float类型的属性,所以没有显示出来min和max。
然后在Q_PROPERTY处和函数实现处改为double后,可正常显示,如下图
因此,Q_PROPERTY可能支持很多种类型,但不一定能显示多种类型。
Qt 自定义属性Q_PROPERTY
Q_PROPERTY()是一个宏,用来在一个类中声明一个属性property,由于该宏是qt特有的,需要用moc进行编译,故必须继承于QObject类。
Q_PROPERTY(typename
READgetFunction
[WRITEsetFunction]
[RESETresetFunction]
[NOTIFYnotifySignal]
[DESIGNABLEbool]
[SCRIPTABLEbool]
[STOREDbool]
[USERbool]
[CONSTANT]
[FINAL])
下面是一些典型的声明属性的示例
Q_PROPERTY(doubleminValueREADgetMinValueWRITEsetMinValue)
Q_PROPERTY(boolanimationREADgetAnimationWRITEsetAnimation)
Demo
#ifndefWIDGET_HdefineWIDGET_H
include<QWidget>
QT_BEGIN_NAMESPACE
namespaceUi{classWidget;}
QT_END_NAMESPACEclassWidget:publicQWidget
{
Q_OBJECT
Q_PROPERTY(intm_flagREADgetFlagWRITEsetFlag)public:
Widget(QWidgetparent=nullptr);
~Widget();
public:
intgetFlag(){returnm_flag;}
intsetFlag(intflag){m_flag=flag;}
private:
Ui::Widgetui;
intm_flag;
};endif//WIDGET_H
Qt自定义属性Q_PROPERTY不显示float类型如何解决的详细内容,希望对您有所帮助,信息来源于网络。