QTableWidget簡介
QTableWidget的功能如同Excel資料表, 大都每種程式語言都有此功能, 例如C# 的DataGrid. 撰寫此種元件, 如同在撰寫Excel軟体, 功能強大且複雜, 要花一段時間熟悉.
QTableWidget要研讀的地方非常多. 本篇僅就工作上的需求, 記錄會用到的地方, 其專注的地方, 有如下數項
01. 行列數的新增
02. 水平垂直標頭設定
03. 行寬, 列高設定
04. ReadOnly 設定
05. 資料新增
06. 動態新增行列
07. 動態刪除
08. 選取模式
09. 更改資料立即更新之事件
10. 選取變更事件
設定表頭欄列數
self.datagrid = QTableWidget()
self.datagrid.setColumnCount(5)
self.datagrid.setRowCount(2)
增加表頭
horizontalHeader = ["商品編號", "商品規格", "商品顏色", "定型版號", "存放櫥位", "商品售價"] self.datagrid.setHorizontalHeaderLabels(horizontalHeader) self.datagrid.horizontalHeader().setVisible(True)
表頭字体, 顏色設定
for index in range(self.table.columnCount()):
headItem = self.table.horizontalHeaderItem(index)
headItem.setFont(QFont("song", 12, QFont.Bold))
headItem.setForeground(QBrush(Qt.gray))
headItem.setTextAlignment(Qt.AlignLeft | Qt.AlignVCenter)
增加內容
self.datagrid.setRowCount(len(rows))
for i, row in enumerate(rows):
for j in range(1,len(row)):
self.datagrid.setItem(i, j-1, QTableWidgetItem(row[j]))
設定欄寬及列高
columnWidth=[320, 650, 250, 180, 180, 180]
for index in range(self.datagrid.columnCount()):
headItem = self.datagrid.horizontalHeaderItem(index)
self.datagrid.setColumnWidth(index,columnWidth[index])
self.datagrid.setRowHeight(0,40)# 設定第0列高度為40
最適寬度及高度
最適寬高, 需將資料填好後, 才設定底下代碼
