Qt自定义属性Q_PROPERTY不显示float类型如何解决(float,qt,Q_PROPERTY,开发技术)

时间:2024-05-03 12:27:58 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

希望大家仔细阅读,能够学有所成!

Qt 自定义属性Q_PROPERTY不显示float类型

最近在学习编写自定义控件,其中使用到Q_PROPERTY来设置自定义属性。

查阅资料可以知道,Q_PROPERTY支持的类型可以是QVariant支持的任一类型,又或者是我们自定义的类型,其他是可选的。设置完之后,会在调用自定义控件的时候,在属性编辑表里看到我们的属性。如下图

Qt自定义属性Q_PROPERTY不显示float类型如何解决

但是,今天在使用中发现,少了两个自定义属性min和max,于是查找原因。

后来发现属性表显示的数字类型只有两种:int和double(例如spin box和double spin box),无法显示float类型的属性,所以没有显示出来min和max。

然后在Q_PROPERTY处和函数实现处改为double后,可正常显示,如下图

Qt自定义属性Q_PROPERTY不显示float类型如何解决

因此,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_H

defineWIDGET_H

include<QWidget>

QT_BEGIN_NAMESPACE
namespaceUi{classWidget;}
QT_END_NAMESPACE

classWidget:publicQWidget
{
Q_OBJECT
Q_PROPERTY(intm_flagREADgetFlagWRITEsetFlag)

public:
Widget(QWidgetparent=nullptr);
~Widget();
public:
intgetFlag(){returnm_flag;}
intsetFlag(intflag){m_flag=flag;}
private:
Ui::Widget
ui;
intm_flag;
};

endif//WIDGET_H

本文:Qt自定义属性Q_PROPERTY不显示float类型如何解决的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:vue3如何使用watch监听router的改变下一篇:

5 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18