2013-03-08 34 views
19

我是Qt的這個模型/視圖框架的新手。在我的應用程序中,我想擁有1000 X 1000個單元格。應該有最小內存要求&它應該是快速的。我不知道這個模型術語是什麼。但我有我自己的類,它知道如何處理存儲在表中的雙變量。目前我正在使用QLineEdit和Validator來創建單元格數組。但對於50 X 50以上的單元來說太慢了。所以我決定採用老式的MS Excel方式。QTableWidget與QTableView

那麼,我應該使用哪個小工具:QTableWidgetQTableView

任何人都可以請簡單地解釋一下這個Model/View框架是什麼?我不是一個計算機科學傢伙,因此我發現它很難理解...

回答

16

cmannett85的推薦是個不錯的選擇。閱讀有關十幾次的文檔。

然後,如果性能和內存的問題是你的首要關注,你認爲你可以出執行QTableWidget的執行,然後在QAbstractTableModelQStandardItemModel頂部的QTableView界面是你在找什麼。

由於您是Qt的模型視圖體系結構的新手,因此我建議您使用QStandardItemModel,直到您覺得自己已經掌握了它。如果您的性能仍然不夠好,請通過實施您的自定義模型避免大量內存重複和浪費對象。另外,讓自己a good textbook並閱讀關於模型視圖框架大約12次的章節。該部分本身就是值得它在黃金,imho重量。

這裏有Qt的定製模型 - 視圖框架的基礎知識:被存儲在一個列表/樹

  • 實際數據的地方
  • 模型提供了一個標準框架查詢和編輯您的數據
  • 代理模型允許您排序/過濾數據而不影響原始模型
  • 視圖提供了一種手段,以在視覺上觀察數據
  • 交互
  • 代表(通常可選)調整你的數據的外觀,並提供自定義編輯到數據

如果你感覺既便宜又勇敢,請檢查this excerpt實施自己的自定義模型。一次完成一項功能並隨時隨地使用它。

+0

謝謝你我會購買那本書並按照你的指導。 – 2013-03-11 10:11:57

+0

「這段摘錄」鏈接現已停止 – Claudiu 2015-08-21 21:38:40

+0

@Claudiu感謝您的支持。鏈接再次工作。 – Phlucious 2015-08-31 17:05:13

9

要理解框架,請從documentation開始。它開始緩慢,但變得適度廣泛,涵蓋了大部分涉及的類。

QTableWidget或QTableView?

一旦您已經閱讀你就會明白爲什麼這個問題並沒有真正使任何意義的文件:一個QTableWidget使用一個QTableView來顯示數據。 QTableWidget(連同QTreeWidget等)使用MVC框架,但它將它封裝到一個便於大多數用途的方便軟件包中,但是如果您需要做一些不同的事情,則必須將其分解爲它的組成部分並重新實現你需要的位。

+0

謝謝您閱讀該文檔大約2-3次,開始得到它的一個掛起。 – 2013-03-11 10:12:40

相關問題