Qt 自定义属性Q_PROPERTY不显示float类型的解决
短信预约 -IT技能 免费直播动态提醒
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_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class 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
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341