当前位置: 首页 > news >正文

tableView 相关 API 一览表

类别功能API / 方法代码示例
初始化创建数据模型new QStandardItemModel(this)model = new QStandardItemModel(this);
初始化绑定模型到视图tableView->setModel(model)ui->tableView->setModel(model);
初始化设置不可编辑setEditTriggers(QAbstractItemView::NoEditTriggers)ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);
表头设置水平表头项model->setHorizontalHeaderItem(int, QStandardItem*)model->setHorizontalHeaderItem(i, new QStandardItem(QString::fromLocal8Bit(t)));
表头列宽自动拉伸horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch)ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
单元格写入设置单元格数据项model->setItem(int row, int col, QStandardItem*)model->setItem(index, columnCount-1, item);
单元格写入设置项前景色item->setForeground(QBrush)item->setForeground(QBrush(QColor(255, 0, 0)));
单元格写入设置项字体item->setFont(QFont)item->setFont(tableFont);
数据读取获取总行数model->rowCount()int row = model->rowCount();
数据读取获取总列数model->columnCount()auto col = model->columnCount()-2;
数据读取通过视图获取模型列数tableView->model()->columnCount()auto columnCount = ui->tableView->model()->columnCount();
数据读取获取单元格 itemmodel->item(int row, int col)if (model->item(i,j))
数据读取读取 item 文本item->text()rowItemsText.append(model->item(i, j)->text());
视图操作滚动到底部tableView->scrollToBottom()ui->tableView->scrollToBottom();
清空清空模型所有数据model->clear()model->clear();

说明

  • 代码使用的是QTableView+QStandardItemModel的组合(不同于同文件中ui->tableWidget用的是QTableWidget,后者自带数据模型)。
  • model在构造函数中创建并绑定到ui->tableView,是整个右下角测量结果表格的数据源。
  • 单元格颜色(红=NG/超限,绿=OK)通过QStandardItem::setForeground实现,字体粗体通过setFont(tableFont)实现(tableFont在构造函数中设置为 11 号粗体)。
  • 表头数据来自dog/*.json配置文件中的list字段,见combboxChangedSlot函数。
  • "清零"按钮 (on_pushButton_4_clicked) 和切换型号下拉框都会调用model->clear()清空表格。
fromPyQt5.QtWidgetsimport*fromPyQt5.QtGuiimport*fromPyQt5.QtCoreimport*importsysclassTable(QWidget):def__init__(self,arg=None):super(Table,self).__init__(arg)self.setWindowTitle("QTableView表格视图控件的例子")self.resize(500,300);self.model=QStandardItemModel(4,4);self.model.setHorizontalHeaderLabels(['标题1','标题2','标题3','标题4'])forrowinrange(4):forcolumninrange(4):item=QStandardItem("row %s, column %s"%(row,column))self.model.setItem(row,column,item)self.tableView=QTableView()self.tableView.setModel(self.model)#下面代码让表格100填满窗口self.tableView.horizontalHeader().setStretchLastSection(True)self.tableView.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)dlgLayout=QVBoxLayout();dlgLayout.addWidget(self.tableView)self.setLayout(dlgLayout)if__name__=='__main__':app=QApplication(sys.argv)table=Table()table.show()sys.exit(app.exec_())
importsysfromPyQt5.QtWidgetsimport(QApplication,QWidget,QVBoxLayout,QTableView,QAbstractItemView,QHeaderView,QPushButton)fromPyQt5.QtGuiimportQStandardItemModel,QStandardItem,QBrush,QColor,QFontfromPyQt5.QtCoreimportQTimerclassMainWindow(QWidget):def__init__(self):super().__init__()self.setWindowTitle("QTableView 每秒追加一行模拟实时测量")self.resize(1100,550)layout=QVBoxLayout(self)self.btn_start=QPushButton("开始模拟追加数据")self.btn_stop=QPushButton("停止")layout.addWidget(self.btn_start)layout.addWidget(self.btn_stop)self.tableView=QTableView()layout.addWidget(self.tableView)self.model=QStandardItemModel(self)self.tableView.setModel(self.model)self.tableView.setEditTriggers(QAbstractItemView.NoEditTriggers)self.tableView.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)# 设置表头(只初始化一次)self.init_header()# 原始数据源self.rows_data=[["263.859","234.687","7.886","20.167","9.00514","5.927","7.8900","NG","-"],["263.999","234.857","7.895","20.186","8.95640","5.934","7.8900","OK","OK"],["263.883","234.734","7.886","20.141","9.00873","5.936","7.8766","NG","-"],["263.862","234.728","7.883","20.118","9.01633","5.921","7.8900","OK","OK"],["263.986","234.860","7.876","20.123","9.00313","5.940","7.8898","OK","OK"],["263.797","234.648","7.873","20.122","9.02591","5.908","7.8900","OK","OK"],["263.891","234.797","7.885","20.128","8.96693","5.944","7.8746","NG","-"],]self.data_index=0# 当前取到第几行,循环游标self.bold_font=QFont()self.bold_font.setBold(True)# 定时器 1000msself.timer=QTimer(self)self.timer.setInterval(1000)self.timer.timeout.connect(self.append_one_row)self.btn_start.clicked.connect(self.timer.start)self.btn_stop.clicked.connect(self.timer.stop)definit_header(self):"""只初始化一次表头"""header_list=["全长","行程","螺纹直径","螺纹长度","螺纹长度","螺纹直径","外径","尺寸结果","表检结果"]forcol,textinenumerate(header_list):h_item=QStandardItem(text)self.model.setHorizontalHeaderItem(col,h_item)defappend_one_row(self):"""定时器回调:追加一行"""# 取当前一行数据,游标循环one_row=self.rows_data[self.data_index]self.data_index+=1ifself.data_index>=len(self.rows_data):self.data_index=0new_row=self.model.rowCount()# 在最后插入空行self.model.insertRow(new_row)forcol_idx,txtinenumerate(one_row):item=QStandardItem(txt)iftxt=="NG":item.setForeground(QBrush(QColor(255,0,0)))item.setFont(self.bold_font)self.model.setItem(new_row,col_idx,item)# 新增完成自动滚动到底部,看最新数据self.tableView.scrollToBottom()if__name__=="__main__":app=QApplication(sys.argv)win=MainWindow()win.show()sys.exit(app.exec_())

http://www.jsqmd.com/news/1374384/

相关文章:

  • ai论文写作工具推荐!8款论文AI工具,让理工科图表和公式更配套 - AI论文先行者
  • 大数据时代,谁来守护你的“数字隐私”?
  • 2026年PET纺丝增韧剂靠谱供应商选型指南:合规与性能双维度解析 - 汇聚至此
  • 跨越八百公里游天坛,却败给了一场“逐客令”与冷脸
  • 2026 年呼伦贝尔汽车音响改装服务能力专项测评:舜驰车改汽车贴膜音响服务中心实地验证报告 - 优企甄选
  • 5分钟搞定自研HTTP/2服务!wastnet零依赖、免配置,快速搭建不是梦
  • 2026年涨缩分选机实力厂家直供解析 - 卓企推荐
  • vibecoding阶段,原型设计,好用的网站
  • 别再被坑了!上海小程序定制开发公司推荐指南 - 上海观智网络
  • 动态负载传输:使用peerdiscovery的PayloadFunc实现实时设备状态同步
  • 3大核心功能解密:Elasticsearch Labs如何重塑AI搜索开发体验
  • Claude Code效率模式:Fast Mode加速2.5倍的使用场景与成本分析
  • 浏览器3D建模革命:Chili3D如何颠覆传统CAD设计体验
  • vcflib高级功能探索:如何用vcf2dag构建变异图谱的有向无环图
  • 2026物业食堂保安标书制作全指南:正规服务商甄选、避坑FAQ及高口碑机构深度盘点覆盖全国 - 产业观察报
  • Spring Cache 缓存
  • 2026年 伊金霍洛旗齿轮油更换服务**:工业级润滑技术,重型机械长效护芯之选 - 卓企推荐
  • OpenClaw跨平台部署全攻略:Windows/Ubuntu/macOS实战
  • 如何用naniar快速掌握缺失数据分布?5个核心可视化函数实战指南
  • 题解:CF2097E Clearing the Snowdrift
  • Histore性能测试:200字节微型库的速度与存储容量极限
  • 漏洞缓解验证:如何把研究原型做成受控工具
  • 2026年8月医疗器械电路板设计加工代工指南:为什么医疗器械PCB必须找有ISO13485资质的一站式工厂 - 德益云企业服务
  • QTableWidget 相关 API 一览表
  • 如何用AI对话式视频编辑框架实现300%创作效率提升:从手动剪辑到智能生产的范式革命
  • 深度解析bup备份系统的3种高可用异常处理机制
  • 2026武汉地区招投标服务商甄选指南:标书网代写标书正规吗?附选型避坑全FAQ及行业适配分析 - 商业大观
  • 自定义浏览器页眉页脚
  • 军工研究所Java/前端离职闯互联网:能跳槽、能存活吗?
  • 金融专业大学期间考什么证?按就业方向分梯队更清楚