1. ホーム
  2. c++

[解決済み] QtにおけるQ_PROPERTYの意義は何ですか?

2022-02-10 09:51:54

質問

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

解決方法は?

以下のような利点があります。

  • メタ・オブジェクト・システムで利用できるため、イントロスペクトやQMLからの利用などが可能です。

  • readとwriteだけでなく、さらなるオプションがある。notifyやresetなどを見てください。また、QtCreator(デザイナー)に統合するのも簡単です。

  • Qt 5.1 以降では、一般的な読み取りと書き込みのケースでボイラープレートが生成されるので、書く必要はありません。