Qtのカスタム属性Q_PROPERTYの使用のいくつかの体得
7403 ワード
QtヘルプドキュメントからQ_を検索PROPERTYでは、次のように表示されます.
こんなにたくさん見ましたが、実は今まであまり使っていなかったので、よく使われているいくつかと言います.例を挙げます.
各プロパティにアクセスできる必要があります.これにより、他の言語のgetメソッドやsetメソッドと同様に定義されます.QStringはタイプ、titleは名前、READ titleは読み方、以下は通常のメンバー関数とメンバー変数を自分で定義する必要があります
これを見てみましょう
これまたは演算子を見ると、これらがオプションであることがわかります.一つのQ_PROPERTY定義属性は読み取り専用であってもよい
読み書き可能な書き方1:
書き方2:
書き方3:
書き方四:
ある人は言います:あなたは孔乙己が茴香豆の“茴”の字にいくつかの書き方があることを聞いたのではありませんか?
実はそうではありません.書き方1と書き方2が最も一般的で、書き方2が最も簡潔で、getとsetの方法をカスタマイズしてくれます.書き方1の柔軟性が最も大きく、getとsetの方法はカスタマイズする必要があります.書き方3と書き方4はgetまたはsetのいずれかでカスタマイズできます.
一つ間違いは同じQを同時に使ったことです.PROPERTYにはREADやWRITE、MEMBERといった書き方が多いです.
実際には、特にqmlでよく使われる[NOTIFY notifySignal]もあります.これは、信号を定義するか、公式のヘルプドキュメントで例を挙げるか(ヘルプディレクトリでThe Property Systemを検索する)を定義する必要があります.
NOTIFYは,属性が変化したときに,これを1つの信号で送信して通知することを定義している.
もし皆さんが興味があれば、この文章を見て、上の各属性の使い方について説明しました:Qtのカスタム属性Q_PROPERTY
まとめてみると、これまでREAD、WRITE、MEMBER、そしてNOTIFYの使い方を知りました.
これも私が仕事で今使っているもので、「少なければ得、多ければ惑」です.
ここでは、Qtのプロパティアニメーションとシリアルアニメーショングループを組み合わせた最初のフェードアウトの小さな例を示します.
参考:Qtのカスタム属性Q_PROPERTY
QTのQtのQ_PROPERTYマクロの理解
[Qt入門編]5 Qtの属性システム——属性を宣言する
[Qt入門編]6 Qtの属性システム——READ/WRITE/MEMBER
[Qt入門編]7 Qtの属性システム——NOTIFYとRESET
Q_PROPERTY(type name
(READ getFunction [WRITE setFunction] |
MEMBER memberName [(READ getFunction | WRITE setFunction)])
[RESET resetFunction]
[NOTIFY notifySignal]
[REVISION int]
[DESIGNABLE bool]
[SCRIPTABLE bool]
[STORED bool]
[USER bool]
[CONSTANT]
[FINAL])
こんなにたくさん見ましたが、実は今まであまり使っていなかったので、よく使われているいくつかと言います.例を挙げます.
Q_PROPERTY(QString title READ title WRITE setTitle)
各プロパティにアクセスできる必要があります.これにより、他の言語のgetメソッドやsetメソッドと同様に定義されます.QStringはタイプ、titleは名前、READ titleは読み方、以下は通常のメンバー関数とメンバー変数を自分で定義する必要があります
QString title()
{
return m_title;
}
void setTitle(const QString &title)
{
m_title = title;
}
//
QString m_title;
これを見てみましょう
Q_PROPERTY(type name
(READ getFunction [WRITE setFunction] |
MEMBER memberName [(READ getFunction | WRITE setFunction)])
これまたは演算子を見ると、これらがオプションであることがわかります.一つのQ_PROPERTY定義属性は読み取り専用であってもよい
Q_PROPERTY(type name READ getFunction)
読み書き可能な書き方1:
Q_PROPERTY(type name READ getFunction WRITE setFunction)
書き方2:
Q_PROPERTY(type name MEMBER memberName)
書き方3:
Q_PROPERTY(type name MEMBER memberName READ getFunction)
書き方四:
Q_PROPERTY(type name MEMBER memberName WRITE setFunction)
ある人は言います:あなたは孔乙己が茴香豆の“茴”の字にいくつかの書き方があることを聞いたのではありませんか?
実はそうではありません.書き方1と書き方2が最も一般的で、書き方2が最も簡潔で、getとsetの方法をカスタマイズしてくれます.書き方1の柔軟性が最も大きく、getとsetの方法はカスタマイズする必要があります.書き方3と書き方4はgetまたはsetのいずれかでカスタマイズできます.
一つ間違いは同じQを同時に使ったことです.PROPERTYにはREADやWRITE、MEMBERといった書き方が多いです.
実際には、特にqmlでよく使われる[NOTIFY notifySignal]もあります.これは、信号を定義するか、公式のヘルプドキュメントで例を挙げるか(ヘルプディレクトリでThe Property Systemを検索する)を定義する必要があります.
Q_PROPERTY(QColor color MEMBER m_color NOTIFY colorChanged)
Q_PROPERTY(qreal spacing MEMBER m_spacing NOTIFY spacingChanged)
Q_PROPERTY(QString text MEMBER m_text NOTIFY textChanged)
...
signals:
void colorChanged();
void spacingChanged();
void textChanged(const QString &newText);
private:
QColor m_color;
qreal m_spacing;
QString m_text;
NOTIFYは,属性が変化したときに,これを1つの信号で送信して通知することを定義している.
もし皆さんが興味があれば、この文章を見て、上の各属性の使い方について説明しました:Qtのカスタム属性Q_PROPERTY
まとめてみると、これまでREAD、WRITE、MEMBER、そしてNOTIFYの使い方を知りました.
これも私が仕事で今使っているもので、「少なければ得、多ければ惑」です.
ここでは、Qtのプロパティアニメーションとシリアルアニメーショングループを組み合わせた最初のフェードアウトの小さな例を示します.
参考:Qtのカスタム属性Q_PROPERTY
QTのQtのQ_PROPERTYマクロの理解
[Qt入門編]5 Qtの属性システム——属性を宣言する
[Qt入門編]6 Qtの属性システム——READ/WRITE/MEMBER
[Qt入門編]7 Qtの属性システム——NOTIFYとRESET