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

 更新时间:2022年11月10日 15:15:42   作者:在广州的阿杰  
这篇文章主要介绍了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_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

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

相关文章

  • C++中的opeartor new和placement new使用步骤

    C++中的opeartor new和placement new使用步骤

    这篇文章主要介绍了C++中的opeartor new和placement new详解,在很多情况下,placement new的使用方法和其他普通的new有所不同。这里提供了它的使用步骤,需要的朋友可以参考下
    2022-10-10
  • C++11 lambda(匿名函数)表达式详细介绍

    C++11 lambda(匿名函数)表达式详细介绍

    lambda 表达式(lambda expression)是一个匿名函数,C++11中的lambda表达式用于定义并创建匿名的函数对象,以简化编程工作,下面这篇文章主要给大家介绍了关于C++11 lambda(匿名函数)表达式的相关资料,需要的朋友可以参考下
    2022-07-07
  • C++标准库封装的vector数组

    C++标准库封装的vector数组

    这篇文章主要介绍了C++标准库封装的vector数组,vector创建的对象包含众多封装好的函数,想了解其相关资料的小伙伴可以参考下面文章内容,希望对你的学习有所帮助
    2022-03-03
  • C++ std::shared_mutex读写锁的使用

    C++ std::shared_mutex读写锁的使用

    本文主要介绍了C++ std::shared_mutex读写锁的使用,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • C语言新手入门速通手册

    C语言新手入门速通手册

    C 语言是一种通用的、面向过程式的计算机程序设计语言。1972 年,为了移植与开发 UNIX 操作系统,丹尼斯·里奇在贝尔电话实验室设计开发了 C 语言。C 语言是一种广泛使用的计算机语言,它与 Java 编程语言一样普及,二者在现代软件程序员之间都得到广泛使用
    2022-04-04
  • C语言 详细讲解数组参数与指针参数

    C语言 详细讲解数组参数与指针参数

    这篇文章主要介绍了C语言中数组参数与指针参数的分析,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • C++ 双冒号::符号详解

    C++ 双冒号::符号详解

    本文主要介绍了C++ 双冒号::符号详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • C++设计模式之迭代器模式(Iterator)

    C++设计模式之迭代器模式(Iterator)

    这篇文章主要为大家详细介绍了C++设计模式之迭代器模式Iterator,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • c++ 数字类型和字符串类型互转详解

    c++ 数字类型和字符串类型互转详解

    今天小编就为大家分享一篇讲解c++ 数字类型和字符串类型互转的文章,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-09-09
  • C++多线程之互斥锁与死锁

    C++多线程之互斥锁与死锁

    互斥锁和死锁是C++多线程中常见的情况,这篇文章就带大家进一步了解多线程中的互斥锁与死锁这两个概念,文中的示例代码介绍得很详细,快来跟随小编一起学习吧
    2021-12-12

最新评论