0

我是 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 的目的。

4

2 回答 2

1

将静态成员与Q_PROPERTY. 您提供的代码有两个问题:

  1. 您的test类不派生自QObject. 将其更改为:
class test: public QObject
  1. 在您的 .cpp 文件中,您需要定义静态变量的实例。任何静态成员都是如此,而不仅仅是 for Q_PROPERTY。所以在 test.cpp 中,添加:
bool test::m_enabled = false;

通过这些更改,它应该编译得很好。

于 2021-03-22T16:00:16.070 回答
0

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

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

于 2021-03-22T16:06:13.850 回答