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