問題タブ [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 - QAbstractListmodel の QML Listview ヘッダー headerData()
多くの QAbstractListModels を QML Listview (Qt4.8.2 QML 1.1) に公開しています。私の問題は、QML ListView が ListModels の headerData() 関数を無視していることです。私は今4時間以上解決策を探していました.
これを実現するには、独自の Q_INVOKABLE 関数を実装する必要があると考えています。
headerData() 関数を実装する方法があれば教えてください!
前もって感謝します。
qt - QListView で複雑なウィジェットを表示することは可能ですか?
システム内のすべてのドライブのファイルを表示できるカスタマイズされたウィジェットを作成したいと考えています。レイアウトは次のとおりです。
QListView のすべての行には、タイトル バー (QLabel) と、ファイルを表す多くのアイコンを含む QListWidget が含まれています。
QItemDelegate を使用して QListView の外観をカスタマイズする方法は知っていますが、そのような複雑なウィジェットを作成する方法はわかりません。
誰でも私を助けることができますか?この投稿を読んでいただき、誠にありがとうございます。
c++ - QMLファイルに設定されたListModelを上書きする
私は、C++ 部分がバックエンドと QML ユーザー インターフェイスの間の接続を結び付ける QML C++ プロジェクトを持っています。
QAbstractListModel プロパティを持つ QObject のサブクラスをコンテキスト プロパティとして設定します。
コンポーネントの 1 つに、qml ファイルで定義済みのリスト モデルがあります。そして、それを自分のリストモデルに置き換えたいと思います。しかし、コンテキスト プロパティが設定されていない場合は、そのモデルを保持したいと考えています。これにより、C++ 部分なしでプログラムを実行できます。モデルをコンテキスト プロパティとして設定しても、ローカル モデルがコンテキスト プロパティを無視したため、うまくいきませんでした。
私のQMLはそのように見えます
Designerでのデフォルト値の表示とGuiテスト用のqmlファイルのモデルと、そのmyObjectをコンテキストプロパティとして設定した場合の簡単な上書きの両方を持つことは可能ですか?
編集:QtQuick 1.1でQT 4を使用しています
qt - ListView で QAbstractListModel を使用する
私は Qt が初めてなので、ご容赦ください。
StringList と Object* の QList から ListView を作成することに成功しました
私が今苦労しているのは、QAbstractListModel を派生させる C++ で定義されたクラスを使用して QML に ListView を設定することです。
これが私の CPP クラスのプロトタイプです:
MessageEntry は、QColor と QString の 2 つのメンバーを含む単純なクラスです (このクラスは QObject を拡張しません)。
上記のすべての関数は、基礎となるクラスで純粋な仮想であるため、実装する必要がありました (これは正常ですか? これまでのところ、チュートリアル/サンプルでは、roleNames とデータについてのみ言及されています)。
roleNames と data の実装は次のとおりです。
リスト ビューの QML 部分は次のようなものです。
これまでのところ、これは CPP と QML で物事を実装する方法についての私の理解です。これら 2 つをリンクするには、次のコードを使用します。
上記のコードでは、実行時に ListView に何も表示されず、次のエラーが発生します。
QMLにエクスポートするモデルクラスも登録しています(これが必要かどうかはわかりません):
したがって、QAbstractListItem 派生クラスの適切な使用法を誤解したか、単純な重要なキー情報を見逃していることは明らかです。
関連するいくつかのサンプル/チュートリアルへのポインタをいただければ幸いです(CPPではデータ関数を決して通過しないことに気付いたので、QMLでモデルからデータに適切にアクセスする方法も示しています)。
また、私は qt5 を使用しているため、qt4.8 サンプルではうまくいかないことに注意してください。
編集
何時間もフラストレーションを感じた後、私はついに何が問題だったのかを突き止めました。
私の roleNames 関数の署名が間違っていました! オーバーロードの正しい署名は次のとおりです。
protected および const 修飾子に注意してください。
関数を正しい方法で宣言した後、すべて正常に機能しました。
さらに注意するには、 data と rowCount を実装するだけで十分でした:)。
助けてくれてありがとう。例のコードを調べた後にこれを理解できただけなので、BaCaRoZzoの回答を受け入れます。
補足として、これは message と model.message の両方でうまく機能します。
qt - QAbstractListModel サブクラスをリストモデルとして使用して、QML リストビューでどのアイテムがクリックされたかを知る方法
リストビューで QAbstractListModel サブクラスを使用しています。そして、どの項目がクリックされたかに基づいて、C++ を介して QML に渡される新しいリストモデルを生成できるようにしたいと考えています。
リスト内のどのアイテムがクリックされたかを知るために実装する方法は何ですか?
私はウェブをかなり検索しましたが、それを行うための最良の方法を見つけることができないようです.
このコードは、トップレベルとして表示されるグループリストを作成し、グループリストの各項目の下に表示されるネストされたリストを持ちます。ネストされたリストは明らかにグループの子を示しています..そのため、クリックされているオブジェクトにアクセスして、バックエンドで使用して子の新しいリストを生成できるようにする方法が必要です。
コードは次のとおりです。
クリックされたアイテムの名前を取得するだけでなく、実際のオブジェクトを取得できるようにしたいと考えています。新しい子を正しく識別するには、オブジェクトからより多くのデータを抽出する必要があるからです。
皆さんが私を助けてくれたら、とても感謝しています!
前もって感謝します!
c++ - Qt-Qml: チェックボックスを QAbstractListModel にバインドする
プログラムの開発中に問題に直面しています。QAbstractListModel
プロパティを含む があり、そのboole
値を を含む QML ファイルに渡したいと考えていますCheckBox
。
同じ問題をカバーするStackOverflow でこの質問を見つけました。私はまったく同じ問題に直面していますが、質問と回答は、プロパティが aQ_PROPERTY
を使用して qml に送信される場合をカバーしていQAbstractListmodel
ます。setData()
、data()
およびメソッドをオーバーライドしましたが、flags()
すべて正常に動作しますが、すべてのCheckBox
es をチェック/チェック解除するボタンがあり、ユーザーがそのうちの 1 つを直接チェックすると、チェック/チェック解除ボタンで編集できなくなります。
QAbstractListModel
基本的に、 の代わりに を使用して双方向バインディングを設定する方法を知りたいですQ_PROPERTY
。
ありがとうございました。
qt - QQmlListProperty と QAbstractListModel の比較
QAbstractListModel
aまたは aQObject
を a とともに使用するかどうかを選択する方法を理解しようとしていQQmlListProperty
ます。
QQmlListProperty
を使用して記述しなければならない「ロール」機能を が処理することを考えるとQAbstractListModel
、それほど面倒な方法ではないように思えます。
ほとんどの人が単に長く使用されているという理由だけで使用を提案しQAbstractListModel
ているのか、それとも何らかの理由でより良い選択なのかはわかりません.
また、2 つのオプション間のトレードオフについての議論を見つけることもできませんでした。この質問は、Qt Developer Days で について話し合っているときに提起されましたQAbstractListModel
が、答えは「それもうまくいく」というものでした。
qml - QAbstractListModel の代わりに QAbstractTableModel を使用するのはなぜですか?
次のような役割を持つ s をTableView
使用して QMLに実装しました。TableViewColumn
これは C++ モデルにバインドされ、QAbstractListModel
すべてのロールが定義された状態で継承されており、完全に自然だと思います。
QAbstractTableModel
ただし、列インデックスを使用できるも存在することがわかりました。おそらくそれを使用すべきだったことは理解しましたが、列のインデックスよりもロールの方が好きです。
誰かが を使用する利点を説明してもらえますQAbstractTableModel
か?
qt - QAbstractListModel::position への未定義の参照
実装時にこのエラーが発生しますQAbstractListModel
。
モデルに挿入および削除メソッドを追加する前に、プロジェクトのビルドは成功しました。
まず、insert メソッドと remove メソッドを追加しましたが、begin* メソッドと end* メソッドを呼び出すのを忘れていたため、プロジェクトの再構築時にエラーが発生しました。
その後、ドキュメントに記載されているように begin* と end* を追加します。しかし、プロジェクトをビルドすると、上記のエラーが発生します。次に、挿入および削除メソッドを削除しましたが、エラーは引き続き発生します。
プロジェクトのビルド ディレクトリを削除し、クリーンアップしてから qmake を実行し、プロジェクトをビルドしようとしましたが、うまくいきませんでした。
ObjectModel.h
ObjectModel.cpp