[解決済み] QAbstractTableModelの内部にデータを設定する方法
質問
Qtでテーブルを実装したいのですが、どうすればいいですか?
QAbstractTableModelと、このモデルを使ったQTableViewを使用することになると思います。
モデルのrowCount()、columnCount()、data()関数を編集する必要があることは理解しています。
しかし、data()関数がデータを取得できるように、モデル内部にデータを正確に設定する方法がわかりません。
setData()関数はこのために用意されているのでしょうか?私はそれがそのパラメータとしてEditRoleを取るのを見たが、私は私のテーブルを編集可能にしたくないので、それはいらない。
では、data()関数を使用して、どのようにモデル内にデータを設定し、またはモデルからデータを取得することができるのでしょうか?
また、data()関数はどのように呼び出されるのでしょうか。つまり、誰が呼び出すのか、どこで呼び出す必要があるのでしょうか。
よろしくお願いします。
ありがとうございます。
解決方法は?
実際のデータをどのようにメモリに保持するか、生成するか、データストアから問い合わせるかは、完全にあなた次第です。静的なデータであれば Qtコンテナクラス またはカスタムデータ構造です。
のみを再実装する必要があります。
setData()
メソッドで、編集可能なモデルを作成します。
編集不可の場合、実装が必要なメソッドは4つあります。
QAbstractTableModel
のサブクラスがあります。
-
int rowCount()
-
int columnCount()
-
QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole )
-
QVariant data(const QModelIndex & index, int role = Qt::DisplayRole)
これらのメソッドはビューから呼び出され、通常は
QTableView
のインスタンスです。最初の2つのメソッドは、テーブルの寸法を返す必要があります。たとえば、もし
rowCount()
は以下を返します。
10
と
columnCount()
を返します。
4
を呼び出すと、ビューは
data()
メソッドを 40 回 (各セルに 1 回) 呼び出して、モデルの内部データ構造の実際のデータを要求します。
例として、カスタムスロット
retrieveDataFromMarsCuriosity()
をモデルに追加します。このスロットはデータ構造を生成し、そのデータを
QPushButton
インスタンスで、ボタンをクリックすると新しいデータを取得できます。
さて、データが変更されたときに、ビューが適切に更新できるように、ビューに知らせる必要があります。そのため、データを適切に更新できるようにするために
beginRemoveRows()
,
endRemoveRows()
,
beginInsertRows()
,
endInsertRows()
とその列の対応表です。
は Qt ドキュメント には、これに関して知っておくべきことがすべて書かれています。
関連
-
[解決済み] QAbstractTableModelの内部にデータを設定する方法
-
[解決済み] QVariant::UserType 型の QVariant が期待された型であることを確認するにはどうすればよいですか?
-
[解決済み] Qtのフォームレイアウト機構を理解する
-
[解決済み] QMLイメージの表示サイズを調整する
-
[解決済み] QTextEditの内容を表示するQTextBrowserを持つにはどうしたらよいですか?
-
不完全な型「クラスUi-Widge't」の無効な使用に対する解決策
-
CMakeラーニングサマリー
-
[解決済み】Qt-Designerでレイアウトが自動拡張される。
-
[解決済み】QLabel: テキストと背景の色を設定する
-
[解決済み] Qtプログラムを終了する正しい方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] QDateTime::fromStringの使い方は?
-
[解決済み] QVariant::UserType 型の QVariant が期待された型であることを確認するにはどうすればよいですか?
-
[解決済み] Qml タイマーが正しい間隔で起動しない
-
[解決済み] qtnetwork4.dllという正しいファイルが見当たりません。
-
[解決済み] QMLイメージの表示サイズを調整する
-
Qt signal and slot usage error : error: no matching function for call to ...... Qt signal and slot usage error : error: no matching function for call to ...... Qt signal and slot usage error: error
-
Qt: (クラス名)::connect()への呼び出しに一致する関数がない エラー概要
-
CMakeラーニングサマリー
-
[解決済み】QLabel: テキストと背景の色を設定する
-
[解決済み] Qtプログラムを終了する正しい方法は?