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

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

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

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

(0)

相关推荐

  • Qt自定义控件实现线条型加载条

    本文实例为大家分享了Qt自定义控件实现线条型加载条的具体代码,供大家参考,具体内容如下 上效果图: 思路:先画一个线条,然后旋转坐标系再画其他线条,突出颜色的线条可以画死再旋转,也可以按照角度递增让特定线画突出颜色(这里使用的是这种). LoadingBarA::LoadingBarA(QWidget *parent) : QWidget(parent) { timer = new QTimer(this); //定时器 timer->setInterval(50); connect(timer

  • Qt自定义控件实现多彩色仪表盘

    本文实例为大家分享了Qt实现多彩色仪表盘的具体代码,供大家参考,具体内容如下 Qt自定义控件4:多彩色仪表盘 先看效果图: 思路:外围三色的圆弧 红:蓝:绿 = 1:2:1,总共占270度.刻度线是根据所在圆弧的颜色而画,刻度线的角度也是根据坐标系的旋转而画.刻度值是根据刻度线的角度得到所要画的刻度的左上角的坐标,然后构成一个矩形,根据矩形画出刻度值.指针是根据四个点的坐标直接画的四边形,再旋转坐标系实现指针旋转的效果.下方的文字直接得到坐标横纵坐标位置得到矩形画出value的值 关键代码:CM

  • Qt 进度条的实现示例

    一.前言 有时我们需要在表格(QTableWidget).树状栏(QTreeWidget)中直观显示任务进度或消耗百分比,达到报表显示的形式,可通过重写QLabel的方式实现. 1.进度条控件功能 1)可设置值动态变化 2)可设置警戒值 3)可设置正常颜色和报警颜色 4)可设置边框渐变颜色 5)可设置变化时每次移动的步长 6)可设置错误时显示错误描述 7)可设置显示值保留小数的位数 8)可设置边框圆角角度/背景进度圆角角度/头部圆角角度 2.实现效果 二.实现过程 1.运行环境Qt5.5 VS2

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

    目录 Qt 自定义属性Q_PROPERTY不显示float类型 Qt 自定义属性Q_PROPERTY 下面是一些典型的声明属性的示例 Demo Qt 自定义属性Q_PROPERTY不显示float类型 最近在学习编写自定义控件,其中使用到Q_PROPERTY来设置自定义属性. 查阅资料可以知道,Q_PROPERTY支持的类型可以是QVariant支持的任一类型,又或者是我们自定义的类型,其他是可选的.设置完之后,会在调用自定义控件的时候,在属性编辑表里看到我们的属性.如下图 但是,今天在使用中发

  • Java实现显示指定类型的文件

    文件作为存储数据的单元,会根据数据类型产生很多分类,也就是所谓的文件类型.在对数据文件进行操作时,常常需要根据不同的文件类型来作不同的处理.本实例实现的是读取文件夹指定类型的文件并显示到表格控件中.这对于项目开发中的文件分类起到了抛砖引玉的作用. 思路分析: 因为是窗体应用,首先看视图层.需要一个按钮控件JButton用来选择文件夹:需要一个标签控件JLabel用来显示选择的路径:需要一个标签控件JLabel提示用户输入什么:需要一个文本框控件JTextField供用户输入文件类型:需要一个表格

  • PHP格式化MYSQL返回float类型的方法

    本文实例讲述了PHP格式化MYSQL返回float类型的方法.分享给大家供大家参考,具体如下: PHP 中获取mysql的float字段,echo 输出后,小数部分为包含多个0. 可使用 floatval($num) 将0舍去. 如要保留小数位,可使用 number_format($num, 2); number_format函数对超过指定位数的值,进行了四舍五入. 如不想四舍五入,而保留所有小数.可使用如下方法: // 如仅想保留两位小数可用 number_format($num, 2); e

  • PHP中的float类型使用说明

    float类型的表示可以有以下几种: 复制代码 代码如下: <?php $a = 1.234; $b = 1.2e3; $c = 7E-10; ?> 使用PHP的float类型需要注意的是:PHP的float类型的精度有点问题.如果需要高精度的数学计算,可以使用php提供的专用的数学函数 arbitrary precision math functions系列和gmp系列函数.还有就是不要试图进行比较float类型的变量. Converting to float For information

  • mysql下float类型使用一些误差详解

    单精度浮点数用4字节(32bit)表示浮点数采用IEEE754标准的计算机浮点数,在内部是用二进制表示的如:7.22用32位二进制是表示不下的.所以就不精确了. mysql中float数据类型的问题总结 对于单精度浮点数Float:  当数据范围在±131072(65536×2)以内的时候,float数据精度是正确的,但是超出这个范围的数据就不稳定,没有发现有相关的参数设置建议:将float改成double或者decimal,两者的差别是double是浮点计算,decimal是定点计算,会得到更

  • mysql中sum float类型使用小数点的方法

    方法一:最好的办法是将float字段改为decimal(16,6).具体方法:可设置一个临时字段,结合MySQL的关键字binary进行准确复制等.方法二:使用binary关键字解决.具体操作为"select sum(binary 字段名(float类型))"BINARY不是函数,是类型转换运算符,它用来强制它后面的字符串为一个二进制字符串例子: 复制代码 代码如下: "select sum(a.number*binary(b.price)) as total       

  • Java NumberFormat格式化float类型的bug

    首先,这个NumberFormat这个类,可以格式化各种数字.你只要稍微设置一下,结果还是很理性的. 但是,他有那么一丢丢的bug,不知道你知道不? /** * 2.3F经过格式化,竟然变成2.99啦.what the fuck . * float类型的时候,值是2.3,但是一经变成Double,值就变成2.99999啦. * 这个format的参数是double类型的.所以,在传入参数的时候,就变成了对2.299999952316284进行操作.返回就过就是2.99 */ private st

  • python 保存float类型的小数的位数方法

    python保留两位小数: In [1]: a = 5.026 In [2]: b = 5.000 In [3]: round(a,2) Out[3]: 5.03 In [4]: round(b,2) Out[4]: 5.0 In [5]: '%.2f' % a Out[5]: '5.03' In [6]: '%.2f' % b Out[6]: '5.00' In [7]: float('%.2f' % a) Out[7]: 5.03 In [8]: float('%.2f' % b) Out[

  • c语言float类型小数点后位数

    c语言float类型小数点后有几位有效数字? float类型小数点后有效数字为6~7位. C语言中浮点型一般分为float单精度型.double双精度型.long double长精度型,单精度浮点型小数点后面有效数字为6~7位和双精度浮点型小数点后面有效数字为15~16位.单精度为32位,双精度为64位,8位为一个字节. 在C语言标准库头文件float.h定义了浮点数小数点后的有效位数 : //float.h头文件的部分代码 #define DBL_DIG 15 //双精度小数点后15位 #de

  • django filter过滤器实现显示某个类型指定字段不同值方式

    1,前端样式 2,html代码 {% load asset_filter %} <div class="col-sm-2"> <select class="input-sm form-control select2 inline" name="ServiceModel"> <option value="">模块</option> {% for i in 'Ecs'|ecs_mod

随机推荐