Qt 5.7.0とQMLに問題があります。私は実行時にいくつかのオブジェクトのプロパティを発見する必要があります。Qt/QMLがgetOwnPropertyDescriptorを動作させることができません
目的は、他の場所にある純粋なQMLツリービューを使用することです。これはハードコーディングされたプロパティで構築され、表示する値を保持します。非常にシンプルなツリービューで、必要なものです。コントロール2.0を使用する私は "在庫" TreeViewがありません。
私の目標は、純粋なQML TreeViewを変更して、オブジェクトツリーとハードコードされた名前の代わりにproprtyの名前を与えることです。
軽量コンポーネントを使用するために完全なQtモデルを使用したくありません。
この目標を残しておけば、実行時に名前を知るだけでプロパティ値を動的に求めなければならないことがあります。例えば、C#とJavaでは、リフレクションを使用して簡単に行うことができます。
C#の世界から来て、私は同じコンセプトを探しています。私のユースケースでは、オブジェクトは純粋なQMLオブジェクトではなく、qmlRegisterTypeによって公開されるC++オブジェクトです。
私はObject.getOwnPropertyDescriptorを使用する予定が、私は私が欲しいとそれが動作することはできません、テストの時間後に...ここで
が
import QtQuick 2.0
Item {
id: myTest
property int myProp : 1234
function test() {
console.log("_________________TEST_________________");
console.log(Object.getOwnPropertyNames(myTest))
console.log(myTest.hasOwnProperty("myProp"))
console.log(Object.getOwnPropertyDescriptor(myTest, "myProp"));
console.log("_________________TEST_________________");
}
}
純粋QML/JSでPOCです私が手ログで
:
ライン「QML:真」による「hasOwnPropertyを( 『MyPropで』)」プロパティを見つけて、「真」と言います。
しかし、プロパティディスクリプタを取得しようとする次の行は "undefined"を返します。
私の問題を解決できる人は私のヒーローです!
プロパティは 'readonly'として定義されていませんか?簡単なスニペット、 'TreeView'の構造を想像する必要があります。 'hardcoded'が' readonly'でない限り(C++では:setterはありません)、実行可能でなければなりません。 – derM