QTableWidget與QTableView的區別

QTableWidget繼承自QTableView。QSqlTableModel能與QTableView綁定,但不能於QTableWidget綁定。ide

 

 

Cpp代碼  
  1. QSqlTableModel *model = new QSqlTableModel;  
  2. model->setTable("employee");  
  3. model->setEditStrategy(QSqlTableModel::OnManualSubmit);  
  4. model->select();  
  5. model->removeColumn(0); // don't show the ID  
  6. model->setHeaderData(0, Qt::Horizontal, tr("Name"));  
  7. model->setHeaderData(1, Qt::Horizontal, tr("Salary"));  
  8.   
  9. QTableView *view = new QTableView;  
  10. view->setModel(model);  
  11. view->show();  
 

       QTableWidget是QT程序中經常使用的顯示數據表格的空間,很相似於VC、C#中的DataGrid。說到QTableWidget,就必須講一下它跟QTabelView的區別了。函數

      QTableWidget是QTableView的子類,主要的區別是QTableView能夠使用自定義的數據模型來顯示內容(也就是先要經過setModel來綁定數據源),而QTableWidget則只能使用標準的數據模型,而且其單元格數據是QTableWidgetItem的對象來實現的(也就是不須要數據源,將逐個單元格內的信息填好便可)。這主要體如今QTableView類中有setModel成員函數,而到了QTableWidget類中,該成員函數變成了私有。使用QTableWidget就離不開QTableWidgetItem。QTableWidgetItem用來表示表格中的一個單元格,正個表格都須要用逐個單元格構建起來。ui

 

 

                                                     具體區別表格spa

 

區別點對象

QTableView繼承

QTableWidgetci

繼承關係rem

 

QTableWidget繼承自QTableViewget

使用數據模型setModelit

能夠使用setModel設置數據模型

setModel是私有函數,不難使用該函數設置數據模型

顯示覆選框setCheckState

沒有函數實現複選框

QTableWidgetItem類中的setCheckState(Qt::Checked);能夠設置複選框

與QSqlTableModel綁定

QTableView能與QSqlTableModel綁定

QtableWidget不能與QSqlTableModel綁定

     


View與Model綁定注意事項

但視圖與模型綁定時,模型必須使用new來建立。不然視圖不能隨着模型的改變而改變。

Eorror錯誤的寫法

 

Cpp代碼  
  1. QStandardItemModel model(4,2);  
  2.   
  3.   
  4. model.setHeaderData(0, Qt::Horizontal, tr("Label"));  
  5. model.setHeaderData(1, Qt::Horizontal, tr("Quantity"));  
  6.   
  7.   
  8. ui.tableView->setModel(&model);  
  9.   
  10. for (int row = 0; row < 4; ++row) {  
  11.     for (int column = 0; column < 2; ++column) {  
  12.         QModelIndex index = model.index(row, column, QModelIndex());  
  13.         model.setData(index, QVariant((row+1) * (column+1)));  
  14.     }  
  15. }  
  16.    
 

Right 正確的寫法

 

Cpp代碼  
  1. QStandardItemModel *model;  
  2.   
  3. model = new QStandardItemModel(4,2);  
  4. ui.tableView->setModel(model);  
  5.   
  6. model->setHeaderData(0, Qt::Horizontal, tr("Label"));  
  7. model->setHeaderData(1, Qt::Horizontal, tr("Quantity"));  
  8.   
  9. for (int row = 0; row < 4; ++row) {  
  10.     for (int column = 0; column < 2; ++column) {  
  11.         QModelIndex index = model->index(row, column, QModelIndex());  
  12.         model->setData(index, QVariant((row+1) * (column+1)));  
  13.     }  
  14. }  
 
相關文章
相關標籤/搜索