日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達者為師

網(wǎng)站首頁 編程語言 正文

Qt?自定義屬性Q_PROPERTY不顯示float類型的解決_C 語言

作者:在廣州的阿杰 ? 更新時間: 2022-12-09 編程語言

Qt 自定義屬性Q_PROPERTY不顯示float類型

最近在學(xué)習(xí)編寫自定義控件,其中使用到Q_PROPERTY來設(shè)置自定義屬性。

查閱資料可以知道,Q_PROPERTY支持的類型可以是QVariant支持的任一類型,又或者是我們自定義的類型,其他是可選的。設(shè)置完之后,會在調(diào)用自定義控件的時候,在屬性編輯表里看到我們的屬性。如下圖

但是,今天在使用中發(fā)現(xiàn),少了兩個自定義屬性min和max,于是查找原因。

后來發(fā)現(xiàn)屬性表顯示的數(shù)字類型只有兩種:int和double(例如spin box和double spin box),無法顯示float類型的屬性,所以沒有顯示出來min和max。

然后在Q_PROPERTY處和函數(shù)實現(xiàn)處改為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

原文鏈接:https://blog.csdn.net/weixin_44650358/article/details/127494560

欄目分類
最近更新