开发者

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

目录
  • Qt 自定义属性Q_PROPERTY不显示float类型
  • Qt 自定义属性Q_PROPERTY
    • 下面是一些典型的声明属性的示例
    • Demo

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

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

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

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

但是开发者_Python开发,今天在使用中发现,少了两个自定义属性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(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(inhttp://www.devze.comt m_flag READ getFlag WRITE javascriptsetFlag)

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
public:
    int getFlag(){return m_flag;}
    int setFlag(int flag){m_flajsg = flag;}
private:
    Ui::Widget *ui;
    int m_flag;
};
#endif // WIDGET_H

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新开发

开发排行榜