QTableWidget与QTableView的区别
QTableWidget繼承自QTableView。QSqlTableModel能與QTableView綁定,但不能于QTableWidget綁定。
| QSqlTableModel *model = new QSqlTableModel; model->setTable("employee"); model->setEditStrategy(QSqlTableModel::OnManualSubmit); model->select(); model->removeColumn(0); // don't show the ID model->setHeaderData(0, Qt::Horizontal, tr("Name")); model->setHeaderData(1, Qt::Horizontal, tr("Salary")); QTableView?*view = new?QTableView; view->setModel(model); view->show(); |
模型視圖結構
Qt4中引入了模型/視圖框架來完成數據與表現的分離,這在Qt4中稱為InterView框架。
MVC設計模式是起源于Smalltalk的一種與用戶界面相關的設計模式。MVC包括三個元素:模型(Model)表示數據,視圖(View)是用戶界面,控制(Controler)定義了用戶在界面上的操作。通過使用MVC模式,有效的分離了數據和用戶界面,使得設計更為靈活,更能適應變化。
模型:所有的模型都基于QAbstractItemModel類,該類是抽象基類。
視圖:所有的視圖都從抽象基類QAbstractItemView繼承。
Interview框架提供了一些常見的模型類和視圖類,例如QStandardItemModel,QDirModel,QStringListModel和QColumnView,QHeaderView,QListView,QTableView,QTreeView。
相對于使用現有的模型和視圖,Qt還提供了更為便捷的類來處理常見的一些數據模型。他們將模型和視圖合一,便于處理一些常規的數據類型。使用這些類型雖然簡單方便,但也失去了模型視圖結構的靈活性,所以要根據具體情況來選擇。
具體區別表格
| 區別點 | QTableView | QTableWidget |
| 繼承關系 | ? | QTableWidget繼承自QTableView |
| 使用數據模型setModel | 可以使用setModel設置數據模型 | setModel是私有函數,不難使用該函數設置數據模型 |
| 顯示復選框setCheckState | 沒有函數實現復選框 | QTableWidgetItem類中的setCheckState(Qt::Checked);可以設置復選框 |
| 與QSqlTableModel綁定 | QTableView能與QSqlTableModel綁定 | QTableWidget能與QSqlTableModel綁定 |
| ? | ? | ? |
| ? | ? | ? |
View與Model綁定注意事項
但視圖與模型綁定時,模型必須使用new來創建。否則視圖不能隨著模型的改變而改變。
| Eorror錯誤的寫法 |
| QStandardItemModel model(4,2); ? |
| Right 正確的寫法 |
| QStandardItemModel *model; ? |
總結
以上是生活随笔為你收集整理的QTableWidget与QTableView的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQL增删改查,基础
- 下一篇: Qt中设置窗体固定大小的方法