QT中tableview基本用法

1. 將表格變爲禁止編輯
在默認情況下,表格裏的字符是可以更改的,比如雙擊一個單元格,就可以修改原來的內容,如果想禁止用戶的這種操作,讓這個表格對用戶只讀,可以這樣:
tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
//QAbstractItemView.NoEditTriggers是QAbstractItemView.EditTrigger枚舉中的一個,下面都是觸發修改單元格內容的條件:
QAbstractItemView.NoEditTriggers//不能對錶格內容進行修改
QAbstractItemView.CurrentChanged //.任何時候都能對單元格修改
QAbstractItemView.DoubleClicked //雙擊單元格修改
QAbstractItemView.SelectedClicked //單擊已選中的內容修改
QAbstractItemView.AnyKeyPressed //.按下任意鍵就能修改

QAbstractItemView.AllEditTriggers //.以上條件全包括


2. 設置表格爲整行選擇 
tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows); //整行選中的方式
QAbstractItemView.SelectionBehavior枚舉還有如下類型:
QAbstractItemView.SelectItems //選中單個單元格
QAbstractItemView.SelectRows //.選中一行
QAbstractItemView.SelectColumns //選中一列

3.單個選中和多個選中的設置:
tableWidget->setSelectionMode(QAbstractItemView::ExtendedSelection); //設置爲可以選中多個目標
該函數的參數還可以是:
QAbstractItemView.NoSelection //不能選擇
QAbstractItemView.SingleSelection //選中單個目標
QAbstractItemView.MultiSelection //選中多個目標
QAbstractItemView.ExtendedSelection QAbstractItemView.ContiguousSelection 的區別不明顯,主要功能是正常情況下是單選,但按下Ctrl或Shift鍵後,可以多選

4. 表格表頭的顯示與隱藏
對於水平或垂直方法的表頭,可以用以下方式進行 隱藏/顯示 的設置:
 注意:需要 #include <QHeaderView>
tableWidget->verticalHeader()->setVisible(false); //隱藏列表頭 
tableWidget->horizontalHeader()->setVisible(false); //隱藏行表頭 

5. 對錶頭文字的字體、顏色進行設置 

 注意:需要 #include <QHeaderView>

QTableWidgetItem *columnHeaderItem0 = tableWidget->horizontalHeaderItem(0); //獲得水平方向表頭的Item對象
columnHeaderItem0->setFont(QFont("Helvetica")); //設置字體 
columnHeaderItem0->setBackgroundColor(QColor(0,60,10)); //設置單元格背景顏色 
columnHeaderItem0->setTextColor(QColor(200,111,30)); //設置文字顏色 

6. 在單元格里加入控件
QTableWidget不僅允許把文字加到單元格,還允許把控件也放到單元格中。比如,把一個下拉框加入單元格,可以這麼做:
view plain
QComboBox *comBox = new QComboBox(); 
comBox->addItem("Y"); 
comBox->addItem("N"); 
tableWidget->setCellWidget(0,2,comBox); 
 
7. 單元格設置字體顏色和背景顏色 及字體字符
QTableWidgetItem *item = new QTableWidgetItem("Apple"); 
item->setBackgroundColor(QColor(0,60,10)); 
item->setTextColor(QColor(200,111,100)); 
item->setFont(QFont("Helvetica")); 
tableWidget->setItem(0,3,item); 
另:如果需要對所有的單元格都使用這種字體,則可以使用 tableWidget->setFont(QFont("Helvetica"));

8. 設置單元格內文字的對齊方式
這個比較簡單,使用newItem.setTextAlignment()函數即可,該函數的參數爲單元格內的對齊方式,和字符輸入順序是自左相右還是自右向左。
水平對齊方式有:
Constant Value Description
Qt.AlignLeft// Aligns with the left edge.
Qt.AlignRight // Aligns with the right edge.
Qt.AlignHCenter //Centers horizontally in the available space.
Qt.AlignJustify //Justifies the text in the available space.

垂直對齊方式:
Constant Value Description
Qt.AlignTop // Aligns with the top.
Qt.AlignBottom // Aligns with the bottom.
Qt.AlignVCenter // Centers vertically in the available space.
如果兩種都要設置,只要用 Qt.AlignHCenter | Qt.AlignVCenter 的方式即可 

9. 合併單元格效果的實現:
tableWidget->setSpan(0, 0, 3, 1) # 其參數爲: 要改變單元格的 1行數 2列數 要合併的 3行數 4列數

10. 設置單元格的大小
首先,可以指定某個行或者列的大小
tableWidget->setColumnWidth(3,200); 

tableWidget->setRowHeight(3,60); 


還可以將行和列的大小設爲與內容相匹配
tableWidget->resizeColumnsToContents(); 
tableWidget->resizeRowsToContents(); 

11. 獲得單擊單元格的內容 
通過實現 itemClicked (QTableWidgetItem *) 信號的槽函數,就可以獲得鼠標單擊到的單元格指針,進而獲得其中的文字信息
connect(tableWidget,SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)),this, SLOT( getItem(QTreeWidgetItem*,int)) );

//將itemClicked信號與函數getItem綁定


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章