Qt自定义属性Q_PROPERTY不显示float类型如何解决
本篇内容介绍了“Qt自定义属性Q_PROPERTY不显示float类型如何解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
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(type name READ getFunction [WRITE setFunction] [RESET resetFunction] [NOTIFY notifySignal] [DESIGNABLE bool] [SCRIPTABLE bool] [STORED bool] [USER bool] [CONSTANT] [FINAL])
下面是一些典型的声明属性的示例
Q_PROPERTY(double minValue READ getMinValue WRITE setMinValue)Q_PROPERTY(bool animation READ getAnimation WRITE setAnimation)
Demo
#ifndef WIDGET_H#define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACEnamespace Ui { class Widget; }QT_END_NAMESPACEclass Widget : public QWidget{ Q_OBJECT Q_PROPERTY(int m_flag READ getFlag WRITE setFlag)public: Widget(QWidget *parent = nullptr); ~Widget();public: int getFlag(){return m_flag;} int setFlag(int flag){m_flag = flag;}private: Ui::Widget *ui; int m_flag;};#endif // WIDGET_H
“Qt自定义属性Q_PROPERTY不显示float类型如何解决”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341