QTableWidget 相关 API 一览表

📅 2026/8/11 19:41:19
QTableWidget 相关 API 一览表
类别功能API / 方法代码示例初始化设置行数setRowCount(int rows)ui-tableWidget-setRowCount(2);初始化设置列数setColumnCount(int columns)ui-tableWidget-setColumnCount(listSize-1);表头设置水平表头标签setHorizontalHeaderLabels(QStringList labels)ui-tableWidget-setHorizontalHeaderLabels(headerList);表头列宽自动拉伸horizontalHeader()-setSectionResizeMode(QHeaderView::Stretch)ui-tableWidget-horizontalHeader()-setSectionResizeMode(QHeaderView::Stretch);单元格写入设置单元格内容setItem(int row, int col, QTableWidgetItem *item)ui-tableWidget-setItem(0, 0, item);单元格写入设置单元格内容循环setItem(int row, int col, QTableWidgetItem *item)ui-tableWidget-setItem(0, i1, item);交互控制设置不可编辑setEditTriggers(QAbstractItemView::NoEditTriggers)ui-tableWidget-setEditTriggers(QAbstractItemView::NoEditTriggers);清空清空表格clear()ui-tableWidget-clear();说明ui-tableWidget是QTableWidget类它自带数据模型不需要像QTableView那样配合QStandardItemModel适合简单的表格展示。该表格用于显示尺寸上下限上限/下限两行区别于ui-tableView右下角测量结果表。数据来源与tableView相同都从dog/*.json配置文件中读取upperLimit和lowerLimit字段。QTableWidgetItem是单元格的载体通过new QTableWidgetItem(QString::number(t))创建后传入setItem。importsysimportjsonfromPyQt5.QtWidgetsimport(QApplication,QWidget,QVBoxLayout,QTableWidget,QTableWidgetItem,QAbstractItemView,QHeaderView)classMainWin(QWidget):def__init__(self):super().__init__()self.setWindowTitle(QTableWidget 上下限阈值表格)self.resize(900,220)layoutQVBoxLayout(self)# 控件QTableWidgetself.tableWidgetQTableWidget()layout.addWidget(self.tableWidget)# 保存全局上下限列表对应C upperLimit / lowerLimit 成员变量self.upperLimit[]self.lowerLimit[]# 模拟json字符串就是你给的jsonself.json_text { chindesName:0511156, list: [ 全长, 行程, 螺纹直径, 螺纹长度, 螺端长度, 螺端直径, 外径, 尺寸结果, 表检结果 ], lowerLimit: [1.0, 1.0, 6.794, 8.5, 8.8, 5.82, 7.88], standardValue: [266.68, 248.72, 6.836, 8.821, 9.078, 5.901, 7.886], typeNames: [257.5, 290], upperLimit: [400.0, 400.0, 6.974, 9.0, 9.2, 5.97, 7.9] } # 加载阈值表格等价C refreshYuzhi()self.refresh_yuzhi()defrefresh_yuzhi(self):对应C void MainWindowUi::refreshYuzhi()# 1 清空表格self.tableWidget.clear()# 设置固定2行upper、lowerself.tableWidget.setRowCount(2)temp_configjson.loads(self.json_text)list_sizelen(temp_config[list])iflist_size0:print(ERROR: lack list property !)return# 设置列数 listSize -1 8self.tableWidget.setColumnCount(list_size-1)header_list[]# 第一个表头为空# for i in 0 ~ listSize‑2‑1foriinrange(list_size-2):ttemp_config[list][i]header_list.append(t)# 设置水平表头标签self.tableWidget.setHorizontalHeaderLabels(header_list)# 列自动拉伸铺满self.tableWidget.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)# 单元格禁止编辑self.tableWidget.setEditTriggers(QAbstractItemView.NoEditTriggers)# 加载尺寸上限 upperLimit 第0行 upper_limit_arrtemp_config[upperLimit]upper_limit_sizelen(upper_limit_arr)ifupper_limit_size0:print(ERROR: lack upperLimit property !)else:# 第0行第0列填入 upperitemQTableWidgetItem(upper)self.tableWidget.setItem(0,0,item)# 第1行第0列填入 loweritemQTableWidgetItem(lower)self.tableWidget.setItem(1,0,item)self.upperLimit.clear()foriinrange(upper_limit_size):valupper_limit_arr[i]self.upperLimit.append(val)itemQTableWidgetItem(str(val))# setItem(row, col) col i1self.tableWidget.setItem(0,i1,item)# 加载尺寸下限 lowerLimit 第1行 lower_limit_arrtemp_config[lowerLimit]lower_limit_sizelen(lower_limit_arr)iflower_limit_size0:print(ERROR: lack lowerLimit property !)else:self.lowerLimit.clear()foriinrange(lower_limit_size):vallower_limit_arr[i]self.lowerLimit.append(val)itemQTableWidgetItem(str(val))self.tableWidget.setItem(1,i1,item)if__name____main__:appQApplication(sys.argv)wMainWin()w.show()sys.exit(app.exec_())# -*- coding: utf-8 -*- 【简介】 PyQt5中 QTabWidget 例子 importsysfromPyQt5.QtCoreimport*fromPyQt5.QtGuiimport*fromPyQt5.QtWidgetsimport*classTabDemo(QTabWidget):def__init__(self,parentNone):super(TabDemo,self).__init__(parent)self.tab1QWidget()self.tab2QWidget()self.tab3QWidget()self.addTab(self.tab1,Tab 1)self.addTab(self.tab2,Tab 2)self.addTab(self.tab3,Tab 3)self.tab1UI()self.tab2UI()self.tab3UI()self.setWindowTitle(Tab 例子)deftab1UI(self):layoutQFormLayout()layout.addRow(姓名,QLineEdit())layout.addRow(地址,QLineEdit())self.setTabText(0,联系方式)self.tab1.setLayout(layout)deftab2UI(self):layoutQFormLayout()sexQHBoxLayout()sex.addWidget(QRadioButton(男))sex.addWidget(QRadioButton(女))layout.addRow(QLabel(性别),sex)layout.addRow(生日,QLineEdit())self.setTabText(1,个人详细信息)self.tab2.setLayout(layout)deftab3UI(self):layoutQHBoxLayout()layout.addWidget(QLabel(科目))layout.addWidget(QCheckBox(物理))layout.addWidget(QCheckBox(高数))self.setTabText(2,教育程度)self.tab3.setLayout(layout)if__name____main__:appQApplication(sys.argv)demoTabDemo()demo.show()sys.exit(app.exec_())