微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将 Q_PROPERTY 与静态类成员一起使用

如何解决如何将 Q_PROPERTY 与静态类成员一起使用

我是 Qt 的新手,遇到了 Q_PROPERTY 类,并试图使用它设置静态成员。这是我目前所拥有的:

class test{
      Q_OBJECT
      Q_PROPERTY(bool enabled READ enabled WRITE setEnabled)
    public:
    bool enabled() const{
        return m_enabled;
    }
    void setEnabled(bool enable){
        m_enabled = enable;
    }
    private:
    static bool m_enabled;
};

当我尝试运行它时遇到编译错误,所以我不确定是否有办法将静态成员与 Q_PROPERTY 一起使用。我已经阅读了他们的文档和其他论坛回复,但我仍然不清楚使用 Q_PROPERTY 的目的。

解决方法

将静态成员与 Q_PROPERTY 一起使用没有什么特别之处。您提供的代码有两个问题:

  1. 您的 test 类不是从 QObject 派生的。改成这样:
class test: public QObject
  1. 在您的 .cpp 文件中,您需要定义静态变量的实例。这适用于任何静态成员,而不仅仅是 Q_PROPERTY。所以在 test.cpp 中,添加:
bool test::m_enabled = false;

有了这些更改,它应该可以正常编译。

,

您的类将需要从 QObject 继承才能使用诸如 Q_PROPERTY (class test : public QObject) 之类的东西。

Q_PROPERTY 用于声明可以与 Qt 的元对象系统互操作的属性。例如,您可以通过属性的字符串名称来设置属性,可以通过 QML 与属性进行交互,可以使用 QPropertyAnimation 为属性设置动画,并且可以使用 Q_PROPERTY 定义将显示的属性在诸如 Qt Designer 之类的编辑器中。通常,标准 C++/Qt 应用程序不需要 Q_PROPERTY

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。