如何将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

相关内容

  • 没有找到相关文章

最新更新