私は(public :
セクションで定義された)データメンバC++コードから一部Q_PROPERTY
に対応する読み取り、場合Q_PROPERTY
はREAD
なしCONSTANT
MEMBER
以外であれば、任意の欠点はありますか?直接リード部材プロパティC++コードから
class Value
: public QObject
{
Q_OBJECT
Q_PROPERTY(int x MEMBER x NOTIFY xChanged)
public :
Value(QObject * const parent)
: QObject{parent}
{ ; }
int x = 0;
Q_SIGNALS :
void xChanged(int x);
};
//...
Value v;
//...
std::cout << v.x;
Q_EMIT xChanged(123);
は場合に自動的に呼び出されるので、確かに書くことv.setPropery("x", 123);
を使用して魅力的です。しかし、毎回v.x
の代わりにv.property("x")
と書くのは面倒ですが、C++コードからプロパティの値を読み取る必要があるだけです。 BTWはランタイムの意味では最適ではありません、確かです。
上記のようなクラスのデータメンバーを直接読み込んだ場合、C++とJavascript/QMLコードの間に悪影響はありますか?
OOPパラダイム(カプセル化)のためにフィールドを公開するのは悪いです。だから、あなたが安全で読みやすいコードを気にしなければ、フィールドをパブリックメンバーとして使うことができます。 –
QMLの観点から@DmitrySazonov私はデータメンバーに直接アクセスできます。彼らは一般公開されています。 C++側は、OOPの意味でQML側に反映されています。 – Orient
@DmitrySazonov公開された唯一の欠点は、私が 'これ '以外のすべてに対して' const'にすることができないことです。 – Orient