web-dev-qa-db-ja.com

QTableWidget vs QTableView

QtのこのModel/View Frameworkは初めてです。私のアプリケーションでは、1000 X 1000のセルが必要です。最小メモリ要件があり、高速である必要があります。このモデルの用語が何のためにあるのか分かりません。しかし、テーブルに格納されているdouble変数の処理方法を知っている独自のクラスがあります。現在、QLineEditのValidatorを使用してセルの配列を作成しています。しかし、50 X 50を超えるセルに対しては遅すぎるので、古き良きMS Excelの方法を採用することにしました。

どのウィジェットを使用する必要があります:QTableWidgetまたはQTableView

そして、誰でもこのModel/Viewフレームワークが何であるか簡単に説明できますか?私はコンピューターサイエンスの男ではないので、理解するのが難しいと感じています...

29
Cool_Coder

cmannett85の推奨は良いものです。文書を数十回読んでください。

次に、パフォーマンスとメモリの問題が主な関心事であり、QTableWidgetの実装をアウトパフォームできると思う場合は、 QTableView インターフェースの QAbstractTableModel または QStandardItemModel が探しているものです。

Qtのモデルビューアーキテクチャは初めてなので、慣れるまでQStandardItemModelを使用することをお勧めします。それでもパフォーマンスが十分でない場合は、カスタムモデルを実装して、メモリの重複や無駄なオブジェクトの多くを避けてください。さらに、 優れた教科書 を入手し、モデルビューフレームワークに関する章を約12回読んでください。そのセクションだけでも、金でその重みの価値があります。

Qtのカスタムモデルビューフレームワークの基本は次のとおりです。

  • 実際のデータはリスト/ツリーのどこかに保存されます
  • modelは、データのクエリと編集のための標準的なフレームワークを提供します
  • プロキシモデルにより、元のモデルに影響を与えずにデータをソート/フィルタリングできます
  • viewは、視覚的にobserveおよびinteract あなたのデータ
  • デリゲート(多くの場合オプション)データの外観を調整し、データにカスタムエディターを提供します

安くて勇気があるなら、 この抜粋 をチェックして、独自のカスタムモデルを実装してください。一度に1つの機能で作業し、移動しながら操作します。

18
Phlucious

フレームワークを理解するには、まずそれについて documentation から始めてください。開始は遅くなりますが、適度に広範囲になり、関係するほとんどのクラスをカバーします。

QTableWidgetまたはQTableView?

ドキュメントを読むと、なぜこの質問が本当に意味をなさないのかがわかるでしょう:a QTableWidgetusesa QTableViewはデータを表示します。 QTableWidgetQTreeWidgetなどとともに)はMVCフレームワークを使用しますが、ほとんどすべての目的に役立つ便利なパッケージにすべてをカプセル化しますが、何か別のことをする必要がある場合は、それをコンポーネント部分にクラックし、必要なビットを再実装します。

11
cmannett85