Qt中Q_PROPERTY有什么意义?

时间:2014-02-23 08:10:21

标签: c++ qt qobject qt-signals qproperty

我无法理解Q_PROPERTY的用法。 Q_PROPERTY如何帮助使程序防御?它是干什么用的?我见过论坛,但真的无法进行论坛。我已经理解了这个例子,但不是它的用法。

这是一个例子,我从中获得了什么。我知道阅读会给予阅读权限。

write属性将赋予仅写入权限。但它有什么需要呢?有人可以举例说明吗?

 class MyClass : public QObject
 {
     Q_OBJECT
     Q_PROPERTY(Priority priority READ priority WRITE setPriority NOTIFY priorityChanged)
     Q_ENUMS(Priority)

 public:
     MyClass(QObject *parent = 0);
     ~MyClass();

     enum Priority { High, Low, VeryHigh, VeryLow };

     void setPriority(Priority priority)
     {
         m_priority = priority;
         emit priorityChanged(priority);
     }
     Priority priority() const
     { return m_priority; }

 signals:
     void priorityChanged(Priority);

 private:
     Priority m_priority;
 };

1 个答案:

答案 0 :(得分:11)

它具有以下优点:

  • 它可用于元对象系统,因此可以进行内省,使用QML等。

  • 它还有其他选择,而不仅仅是读写。查看通知,重置等。将它们集成到QtCreator(设计师)中也更容易。

  • 您不需要在常见的读写案例中编写带有Qt 5.1的样板文件,因为它们将为您生成。