如何将 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
中使用静态成员没有什么特别之处。您提供的代码有两个问题:
- 您的
test
class 并非源自 QObject
。将其更改为:
class test: public QObject
- 在您的.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
.
我是 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
中使用静态成员没有什么特别之处。您提供的代码有两个问题:
- 您的
test
class 并非源自QObject
。将其更改为:
class test: public QObject
- 在您的.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
.