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

How to use Q_PROPERTY with static class members

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

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 class 并非源自 QObject。将其更改为:
class test: public QObject
  1. 在您的.cpp 文件中,您需要定义静态变量的实例。这适用于任何静态成员,而不仅仅是 Q_PROPERTY。所以在 test.cpp 中添加:
bool test::m_enabled = false;

经过这些更改,它应该可以正常编译。

您的 class 需要继承 QObject 才能使用 Q_PROPERTY (class test : public QObject).

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