QT tablewidget实时刷新显示内存溢出问题

       本文针对大数据实时刷新显示需求,考虑在不停new QTableWidgetItem条件下内存逐步增加情况,有几点感受:

       1、每个周期批量new QTableWidgetItem之前,先获取QTableWidget的rowCount,并执行removeRow步骤,无法解决占用内存逐步增加情况。

		ui.dataplay_btn->clearContents();

		quint16 table_listCount = ui.dataplay_btn->rowCount();
		for (int i = table_listCount; i >= 0; i--)
		{
			ui.dataplay_btn->removeRow(i);
		}

     2、每周期批量new QTableWidgetItem之后,直接delete QTableWidgetItem,内存不会增加,但无法实现实时显示目的;

   解决措施:

   结合数据量需求,首先在初始化时,生成固定的Row、Column,如:

   ui.dataplay_btn->setRowCount(500);   //500行
   ui.dataplay_btn->setColumnCount(12);   //12列

  写数据时,在0~500行中滚动刷新,首周期创建new QTableWidgetItem,后续周期只是改变其setText值,以解决内存随数据实时加载占用内存增加问题。


                
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt中,可以使用QTableWidget来实现表格的显示和管理。如果需要实现分页显示,可以通过以下步骤来实现: 1. 在QTableWidget中添加分页控件,例如QComboBox或QSpinBox,用于选择需要显示的页数。 2. 定义一个函数来更新表格的显示,该函数应该接受页数作为参数,并根据页数来更新表格的内容。可以使用QTableWidget的setRowCount()和setItem()函数来更新表格。 3. 在分页控件的槽函数中调用更新表格的函数,以实现分页显示。 以下是一个示例代码,演示如何在QTableWidget中实现分页显示: ```python from PyQt5.QtWidgets import QApplication, QTableWidget, QComboBox, QHBoxLayout, QWidget, QTableWidgetItem from PyQt5.QtCore import Qt class TableWidget(QWidget): def __init__(self): super().__init__() # 创建表格和分页控件 self.tableWidget = QTableWidget() self.pageComboBox = QComboBox() # 布局管理器 layout = QHBoxLayout() layout.addWidget(self.tableWidget) layout.addWidget(self.pageComboBox) self.setLayout(layout) # 设置表格属性 self.tableWidget.setColumnCount(3) self.tableWidget.setHorizontalHeaderLabels(['Name', 'Age', 'Gender']) self.tableWidget.setEditTriggers(QTableWidget.NoEditTriggers) self.tableWidget.setSelectionBehavior(QTableWidget.SelectRows) self.tableWidget.setSelectionMode(QTableWidget.SingleSelection) # 添加数据到表格 data = [['Tom', '20', 'Male'], ['Lucy', '18', 'Female'], ['Jack', '22', 'Male'], ['Lily', '19', 'Female'], ['Mike', '21', 'Male'], ['Mary', '23', 'Female']] self.tableWidget.setRowCount(len(data)) for i, row in enumerate(data): for j, cell in enumerate(row): item = QTableWidgetItem(cell) item.setTextAlignment(Qt.AlignCenter) self.tableWidget.setItem(i, j, item) # 添加分页控件的选项 self.pageComboBox.addItems(['1', '2', '3']) # 设置分页控件的槽函数 self.pageComboBox.currentIndexChanged.connect(self.updateTable) def updateTable(self, pageIndex): # 根据页数更新表格的显示 pageSize = 2 startIndex = pageIndex * pageSize endIndex = (pageIndex + 1) * pageSize rowCount = self.tableWidget.rowCount() for i in range(rowCount): if i >= startIndex and i < endIndex: self.tableWidget.showRow(i) else: self.tableWidget.hideRow(i) if __name__ == '__main__': app = QApplication([]) window = TableWidget() window.show() app.exec_() ``` 在上面的示例中,我们创建了一个包含6行3列数据的表格,并添加了一个QComboBox作为分页控件。在分页控件的槽函数中,我们定义了一个updateTable()函数来根据页数更新表格的显示。在updateTable()函数中,我们通过计算起始和结束行索引来确定需要显示的行,并使用showRow()和hideRow()函数来显示或隐藏行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值