23

我无法理解 Q_PROPERTY 的用法。Q_PROPERTY 如何帮助使程序具有防御性?这有什么用途?我看过论坛,但真的无法申请。我已经理解了这个例子,但不是它的用法。

这是示例,我从中获得了什么。我知道 read 将给予只读的特权。

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;
 };
4

1 回答 1

14

它具有以下优点:

  • 它可用于元对象系统,因此可以自省,从 QML 等中使用。

  • 除了读写之外,它还有更多的选择。看看notify、reset等,集成到QtCreator(设计器)也比较容易。

  • 在常见的读写情况下,您不需要使用 Qt 5.1 编写样板,因为它们会为您生成。

于 2014-02-23T08:15:37.323 回答