問題タブ [qabstractlistmodel]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
86 参照

qt - ListView を別のものから更新する

それぞれ 5 枚のカードが 4 スロットあるカード ゲームを作成しています。ListView各スロットを表すために使用しています。最初にコードを説明してから、私の問題を説明しましょう。

ClientCardModelコードと他のメンバーを QML に転送するためのClientCardforと rolesのリストがあります。ListViewそれぞれListViewをゾーン (zone1、zone2 など) で表します。ゲームでは、カードは他のゾーンの他のカードを装備できます。カードに装備されているカードは にQSet<> equipped、カードを装備しているカードは に格納されequipTargetます。ゾーン内のカードにカーソルを合わせると、マウスがカード上に留まるまで、他のゾーンでそれを装備しているカードが画像を使用して強調表示されます。

どんなアイデアでも大歓迎です。

0 投票する
1 に答える
677 参照

qt - これは Qt Quick ComboBox のバグですか?

Qt QuickでQAbstractListModelカスタムモデルを作成するために使用します。ComboBoxヘッダー ファイルのコード:

そしてソースファイルのコード:

そして、次を使用して QML に公開します。

そして、このモデルを使用して ComboBox を作成します。

このコードは完全に実行されますdata()が、ソース ファイルの関数で次の行を見てください。

textRoleのを設定した後ComboBox、表示の役割は「表示」という名前にする必要があると思います。これはDisplay、のカスタム モデルの役割m_roleNames.insert(Display, "display");です。しかし、それは常に正しいとは限りません。

qDebug()<<上記のコードの出力は次のとおりです。

1
1
行 0 役割 260 サイズ 1
表示:「1.8.0_51 64bit」

1
1
行 0 役割 0 サイズ 1
表示: "1.8.0_51 64bit"

2 つの出力はランダムに表示されます。関数にrole渡される引数がゼロになることがあります。ゼロの役割は、Qt で意味します。data()Qt::DisplayRole

だからここに私の質問があります: のセットが textRole の値に等しく設定されていることtextRoleComboBox意味する場合。data roleなぜdata role時々になる べきQt::DisplayRoleですか?のバグComboBoxですか?

0 投票する
0 に答える
54 参照

c++ - QAbstractListModels で構成される QAbstracktListModel。実装方法は?

リストを含むリストが必要です。木ではありません。問題は、QML から新しいデータ モデルを動的に取得する必要があることです。で実装QAbstractItemModelして使用できますTreeViewか?? これを実装する方法は?私にはアイデアがありません(

0 投票する
1 に答える
625 参照

qt - Qt QAbstractItemModel 関数 data() が未定義の役割で呼び出されました

andを使用してカスタム リストを作成したいQListViewので、 を拡張しQListView、特定のメソッドを とともに実装する必要がありました。一見すると画面に正しく表示されますが、リスト モデルにデータを入力した後に問題が発生します。関数は、異なる役割を持つ項目モデルごとに 4 ~ 5 回呼び出されます(一部は未定義の役割/範囲外/おそらくランダムです)。リストモデルの初期化後だけではありません!リスト要素にカーソルを合わせると、ビューは正しいインデックスとロールで data(index,role)を呼び出しますが、直後に予期しないロール値で再度呼び出されますQItemDelegateQAbstractListModelQAbstractItemModel::data(const QModelIndex & index, int role = Qt::DisplayRole) constdata(index,role)

挙動不審のようです。奇妙な電話の発信元を見つけることができませんでした。カスタム クラスのすべてのメソッドにログを記録して、間違った値でメソッドを誤って呼び出しないようにdata(index,role)しています。

どこを見ればいいのか、なぜこの奇妙な呼び出しが発生するのか、誰か考えがありますか?

編集 「奇妙な」呼び出しのソースは次のとおりです。

どういうわけかそれを呼び出すと、異なるロール値QItemDelegate::sizeHint()でトリガーされます。data()

私の場合、0(0,1,2,3) から始まるロール値を定義しました。@Jens によると、これらの値は予約されています。カスタムロールの開始値を変更すると、問題が解決しました。

0 投票する
1 に答える
858 参照

c++ - QAbstractListModel to Combobox 、値を取得する方法 a 値を選択した場合 b

非常に単純な QAbstractListModel の例を作成しました。この例は、次のリンクにも示されています: http://doc.qt.io/qt-5/qtquick-models-abstractitemmodel-example.html プログラムの結果は次のようになります。

プログラムの結果 私はこのようにview.qmlに少し変更を加えました

ここでは、Combobox に動物の種類が表示されますが、onCurrentTextChanged イベント時に「サイズ」の値を書きたいと思います。しかし、型の値を取得できません。