問題タブ [qabstracttablemodel]
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.
c++ - QAbstractTableModelは、変更されたデータのカスタムオブジェクトを取得します
私は最近Qtを再び手に入れ、記憶をリフレッシュし始めました。テーブルのカスタムデータモデルの作成は簡単でした。
現在、選択したデータを取得しようとしています。カスタムデータオブジェクトを使用していることに注意してください。
私のカスタムモデルの例:
platform.h
テスト目的の非常に単純なデータ構造。次に、QAbstractTableModelを実装しました。Data()メソッドは次のようになります。
platformmodel.cpp
このコードから私が理解しているのは、選択可能なアイテムの場合、プラットフォームオブジェクトではなく、常に文字列が返されるということです。
表示する場合、これは正常に機能します。ビューに実際のオブジェクトが表示されます。ここで、QStringだけでなく、モデルから実際のオブジェクトを選択したいと思います。
したがって、メソッド本体は次のようになります。
追伸私は間違ったものを検索しようとしているのかもしれません。カスタムオブジェクトを使用する例を見つけることができますが、選択したアイテムの取得については何も話していません。
文字列を取得し、プラットフォームのリストをループして名前を選択したアイテムと比較するより良い方法が必要です。大きなリストがある場合、各アイテムをループして文字列の比較を行う必要はあまり効率的ではありません。 。
私の問題が十分に明確であることを願っています。重要なことが不足している場合は、例を編集できるようにお知らせください。
編集
Q_DECLARE_METATYPE(Platform);を試しました。
そして、はい、それは機能します、それはそれをQVariantに保存することを可能にします、問題は、表示するために、文字列が常に期待されるので、またはとにかく9/10回です。これまでのところ、テキスト表示と選択モデルから完全なプラットフォームオブジェクトの両方を取得することは不可能のようです(私は両方を個別に行うことができます..かなり役に立たない..)
qt - QAbstractTableModel :: data()でQMapに正しくアクセスする方法
識別子と対応するオブジェクトを含むQMapを取得しました。QAbstractTableModel :: data()をサブクラス化すると、それぞれ行と列を持つQModelIndexが得られます。各行は1つのオブジェクトを表す必要があります(QAbstractTableModel :: rowCount()はmyMap-> size()です)。
経由で現在のオブジェクトを取得することは合法ですか
(ソートされていない)マップの識別子がバイパスされるため、この影響(ソート、挿入)はありますか?つまり、QAbstractTableModel :: setData()の場合、同じマップ識別子をバイパスする必要がありますか?!ありがとう。
qt - QDataWidgetMapper と QAbstractTableModel
がQAbstractTableModel
表示されていQTableView
ます。テーブルには 2 つの列といくつかの行があります。各セルはQLineEdit
. QDataWidgetMapper::addMapping
私の質問は、私のカスタム モデル (QLineEdit
セル用)で使用する方法があるかどうかです。
c++ - Qt QTableView で選択した行を削除する
ボタンをクリックしたときに、選択した行をテーブルから削除したいdelete
。
しかし、Qt のドキュメントで行の削除に関するものは見つかりません。何か案は?
qt - qtのQTableView列に2つの異なる色のテキストを追加します
QTableView を使用して、アプリケーションでユーザー アクティビティを表示しています。
私のモデルには 4 つの列があり、各列には次のような異なる種類のテキストが表示されます。
- 1列目のユーザー名
- 2 列目のユーザー アクティビティ
- 3列目の活動の詳細
2 列目と 3 列目の両方のテキストを "-" で区切られた別のテキストの色で 1 つの列に表示したい。
私のアプリケーションは現在次のようになっています。
しかし、私はそれがこれに似ているようにしたい
誰かがこれを解決するのを手伝ってくれませんか、事前に感謝します
c++ - カスタム クラスの QList で QAbstractTableModel 実装を使用する
の基になるデータ ソースの実装について一般的な質問がありQAbstractTableModel
ます。
このQAbstractTableModel::data()
関数は、行と列の値で構成されるインデックスによってデータ ソースのコンテンツにアクセスします。
基になるデータ ソースがQList
クラスPerson
であり、各メンバーが列を表す場合、特定の列インデックスを使用してそのメンバーにアクセスするにはどうすればよいですか?
Person
私が考えることができる唯一のアプローチは、列番号をクラスのメンバーにマップする一種のマッピングを使用することです。
これはこの問題に取り組むためのアプローチですか、それともより良いものがありますか? 私のクラスに 50 人のメンバーがいる場合、それは大変な作業になります。経由でソースにデータを書き込むときも、同じことを行う必要がありますQAbstractTableModel::setData()
。
Qtでのモデル/ビュー実装のこの部分を理解するのに役立つ資料への回答またはリンクは非常に高く評価されています.
c++ - QTableViewの行の高さを設定するには?
と がQTableView
ありQAbstractTableModel
ます。行の高さが 24 である必要があります。これを行う唯一の方法は、 を呼び出すことQTableView::setRowHeight
です。setRowHeight
モデルは動的であるため、新しい行が追加される可能性がありますが、新しい行が追加されるたびに呼び出したくありません。
新しく追加された行に同じ高さを使用するように設定するにはどうすればよいQTableView
ですか、またはモデルに行の高さを送信できますか?
qt - QAbstractTableModel で通貨形式の数値を並べ替える
data() を実装する QAbstractTableModel サブクラスがあり、一部の列は int と double です。QLocale::toCurrencyString() と QLocale::toString() を使用して、ロケールに基づいてこれらの数値を変換し、「$」や「,」などの書式設定文字を追加しています。結果は文字列であるため、列は int または double 形式ではなく文字列形式で値をソートしています。
QSortFilterProxyModel を使用して、列に基づいて並べ替えています。ただし、データを文字列形式で取得し、それに基づいて並べ替えているだけです。たぶん、data() で int と double をフォーマットすることになっていないのでしょうか? これらの値をフォーマットする別の場所が見つかりませんでした。この問題を解決する方法を知っている人はいますか?