問題タブ [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.
qt - ListView を別のものから更新する
それぞれ 5 枚のカードが 4 スロットあるカード ゲームを作成しています。ListView
各スロットを表すために使用しています。最初にコードを説明してから、私の問題を説明しましょう。
ClientCardModel
コードと他のメンバーを QML に転送するためのClientCard
forと rolesのリストがあります。ListView
それぞれListView
をゾーン (zone1、zone2 など) で表します。ゲームでは、カードは他のゾーンの他のカードを装備できます。カードに装備されているカードは にQSet<> equipped
、カードを装備しているカードは に格納されequipTarget
ます。ゾーン内のカードにカーソルを合わせると、マウスがカード上に留まるまで、他のゾーンでそれを装備しているカードが画像を使用して強調表示されます。
どんなアイデアでも大歓迎です。
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 の値に等しく設定されていることtextRole
をComboBox
意味する場合。data role
なぜdata role
時々になる べきQt::DisplayRole
ですか?のバグComboBox
ですか?
c++ - QAbstractListModels で構成される QAbstracktListModel。実装方法は?
リストを含むリストが必要です。木ではありません。問題は、QML から新しいデータ モデルを動的に取得する必要があることです。で実装QAbstractItemModel
して使用できますTreeView
か?? これを実装する方法は?私にはアイデアがありません(
qt - Qt QAbstractItemModel 関数 data() が未定義の役割で呼び出されました
andを使用してカスタム リストを作成したいQListView
ので、 を拡張しQListView
、特定のメソッドを とともに実装する必要がありました。一見すると画面に正しく表示されますが、リスト モデルにデータを入力した後に問題が発生します。関数は、異なる役割を持つ項目モデルごとに 4 ~ 5 回呼び出されます(一部は未定義の役割/範囲外/おそらくランダムです)。リストモデルの初期化後だけではありません!リスト要素にカーソルを合わせると、ビューは正しいインデックスとロールで data(index,role)を呼び出しますが、直後に予期しないロール値で再度呼び出されます。QItemDelegate
QAbstractListModel
QAbstractItemModel::data(const QModelIndex & index, int role = Qt::DisplayRole) const
data(index,role)
挙動不審のようです。奇妙な電話の発信元を見つけることができませんでした。カスタム クラスのすべてのメソッドにログを記録して、間違った値でメソッドを誤って呼び出しないようにdata(index,role)
しています。
どこを見ればいいのか、なぜこの奇妙な呼び出しが発生するのか、誰か考えがありますか?
編集 「奇妙な」呼び出しのソースは次のとおりです。
どういうわけかそれを呼び出すと、異なるロール値QItemDelegate::sizeHint()
でトリガーされます。data()
私の場合、0(0,1,2,3) から始まるロール値を定義しました。@Jens によると、これらの値は予約されています。カスタムロールの開始値を変更すると、問題が解決しました。
c++ - QAbstractListModel to Combobox 、値を取得する方法 a 値を選択した場合 b
非常に単純な QAbstractListModel の例を作成しました。この例は、次のリンクにも示されています: http://doc.qt.io/qt-5/qtquick-models-abstractitemmodel-example.html プログラムの結果は次のようになります。
プログラムの結果 私はこのようにview.qmlに少し変更を加えました
ここでは、Combobox に動物の種類が表示されますが、onCurrentTextChanged イベント時に「サイズ」の値を書きたいと思います。しかし、型の値を取得できません。