c++ - Qt中Q_PROPERTY的意义是什么?

标签 c++ qt qobject qt-signals qproperty

我无法理解 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;
 };

最佳答案

具有以下优点:

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

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

  • 在常见的读写案例中,您不需要编写带有 Qt 5.1 及更高版本的样板,因为它们会为您生成。

关于c++ - Qt中Q_PROPERTY的意义是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21965777/

相关文章:

qt - 生成的 moc 名称不正确

c++ - 如何从 C++ 中的 HDF5 文件中读取属性名称和数据集名称,这里我不知道 HDF5 文件中有哪些属性

c++ - 从信号到槽的连接返回 false

c++ - 如何使用 Clang 从 C++ 字符串生成 AST?

android - Android模拟器的第一次使用

qt - Qt Installer Framework 可以返回失败退出代码吗?

c++ - 跨线程从 QML 调用 QObject 函数

c++ - QObject克隆

c++ - 如何修复从 ascii 值到 int 的数组赋值

c++ - 如何制作变种。带有 var 的名称。在 C/C++ 中?