Я не могу понять использование Q_PROPERTY. Как th 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;
};
Имеет следующие преимущества:
Он доступен для системы мета-объектов, поэтому его можно анализировать, использовать из QML и т. Д.
У него есть больше возможностей, чем просто читать и писать. Посмотрите на уведомления, сброс и т. Д. Также проще интегрировать их в QtCreator (конструктор).
Вам не нужно писать шаблон с Qt 5.1 и выше в общих случаях чтения и записи, потому что они будут сгенерированы для вас.
Других решений пока нет …