QTableWidget 相关 API 一览表

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, i+1, item);
交互控制设置不可编辑setEditTriggers(QAbstractItemView::NoEditTriggers)ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
清空清空表格clear()ui->tableWidget->clear();

说明

  • ui->tableWidgetQTableWidget类,它自带数据模型(不需要像QTableView那样配合QStandardItemModel),适合简单的表格展示。
  • 该表格用于显示尺寸上下限(上限/下限两行),区别于ui->tableView(右下角测量结果表)。
  • 数据来源与tableView相同,都从dog/*.json配置文件中读取upperLimitlowerLimit字段。
  • 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)layout=QVBoxLayout(self)# 控件:QTableWidgetself.tableWidget=QTableWidget()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_config=json.loads(self.json_text)list_size=len(temp_config["list"])iflist_size==0: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):t=temp_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_arr=temp_config["upperLimit"]upper_limit_size=len(upper_limit_arr)ifupper_limit_size==0:print("ERROR: lack 'upperLimit' property !")else:# 第0行第0列填入 upperitem=QTableWidgetItem("upper")self.tableWidget.setItem(0,0,item)# 第1行第0列填入 loweritem=QTableWidgetItem("lower")self.tableWidget.setItem(1,0,item)self.upperLimit.clear()foriinrange(upper_limit_size):val=upper_limit_arr[i]self.upperLimit.append(val)item=QTableWidgetItem(str(val))# setItem(row, col) col = i+1self.tableWidget.setItem(0,i+1,item)# ========== 加载尺寸下限 lowerLimit 第1行 ==========lower_limit_arr=temp_config["lowerLimit"]lower_limit_size=len(lower_limit_arr)iflower_limit_size==0:print("ERROR: lack 'lowerLimit' property !")else:self.lowerLimit.clear()foriinrange(lower_limit_size):val=lower_limit_arr[i]self.lowerLimit.append(val)item=QTableWidgetItem(str(val))self.tableWidget.setItem(1,i+1,item)if__name__=="__main__":app=QApplication(sys.argv)w=MainWin()w.show()sys.exit(app.exec_())

# -*- coding: utf-8 -*-''' 【简介】 PyQt5中 QTabWidget 例子 '''importsysfromPyQt5.QtCoreimport*fromPyQt5.QtGuiimport*fromPyQt5.QtWidgetsimport*classTabDemo(QTabWidget):def__init__(self,parent=None):super(TabDemo,self).__init__(parent)self.tab1=QWidget()self.tab2=QWidget()self.tab3=QWidget()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):layout=QFormLayout()layout.addRow("姓名",QLineEdit())layout.addRow("地址",QLineEdit())self.setTabText(0,"联系方式")self.tab1.setLayout(layout)deftab2UI(self):layout=QFormLayout()sex=QHBoxLayout()sex.addWidget(QRadioButton("男"))sex.addWidget(QRadioButton("女"))layout.addRow(QLabel("性别"),sex)layout.addRow("生日",QLineEdit())self.setTabText(1,"个人详细信息")self.tab2.setLayout(layout)deftab3UI(self):layout=QHBoxLayout()layout.addWidget(QLabel("科目"))layout.addWidget(QCheckBox("物理"))layout.addWidget(QCheckBox("高数"))self.setTabText(2,"教育程度")self.tab3.setLayout(layout)if__name__=='__main__':app=QApplication(sys.argv)demo=TabDemo()demo.show()sys.exit(app.exec_())