返回顶部

[Python] [pyqt5] 奇怪的QTableWidget行为 – 排序后表格内容不再填充所有单元格或者只填充最后一行解决办法

[复制链接]
awagink 显示全部楼层 发表于 2021-1-14 09:09:11 |阅读模式 打印 上一主题 下一主题


原文   https://stackoverflow.com/questions/7960505/strange-qtablewidget-behavior-not-all-cells-populated-after-sorting-followed-b
我有一个QTableWidget,我填充如下:
  1. // Clear the table
  2.   this->topPatchesTableWidget->setRowCount(0);

  3.   this->topPatchesTableWidget->setRowCount(numberToDisplay);
  4.   for(unsigned int pairId = 0; pairId < numberToDisplay; ++pairId)
  5.     {
  6.     // Display patch match scores
  7.     QTableWidgetItem* myLabel = new QTableWidgetItem;
  8.     myLabel->setData(Qt:<img src="https://static.nasue.com/static/image/smiley/default/biggrin.gif" border="0" smilieid="3" alt=":D">isplayRole, myValues[pairId]);
  9.     this->tableWidget->setItem(pairId, 0, myLabel);
  10.     ... fill other columns ...
  11.     }
复制代码

(我有一些其他UI元素来设置计算myValues中值的属性).如果我更改属性,重新计算并重新创建表,一切都按预期工作.如果我通过单击其中一个标题对表进行排序,则会对其进行正确排序.但是,如果此时(排序后)我再次单击我的按钮重新计算值并重新创建表格,表格非常破碎.也就是说,许多单元格是空的,而非空单元格似乎没有任何特定的顺序.

通过添加手动调用

  1. this->tableWidget->sortByColumn(0, Qt::AscendingOrder);
复制代码

在我的CreateTable函数的开头,一切都按预期工作,但当然新创建的表按列0排序,而不是为最后一次排序选择的列.

有没有人知道为什么没有调用sortByColumn就会出错? (我试图做一个简单的例子,但我无法在演示程序中复制问题).

谢谢,

大卫

我在python中遇到了类似的问题,如果选择了列标题以便在该列停止填充后启用对单元格进行排序.
我通过在行add方法的开头设置self.tableWidget.setSortingEnabled(False),然后在行add方法的末尾将其设置回self.tableWidget.setSortingEnabled(True)来解决它.根据riverbank computing,这是正式推荐的解决此问题的方法.
QTableWidget.setItem (self, int row, int column, QTableWidgetItem item)

Note that if sorting is enabled (see sortingEnabled) and column is the current sort column, the row will be moved to the sorted position determined by item.

If you want to set several items of a particular row (say, by calling setItem() in a loop), you may want to turn off sorting before doing so, and turn it back on afterwards; this will allow you to use the same row argument for all items in the same row (i.e. setItem() will not move the row).
See also item() and takeItem().


您需要登录后才可以回帖 登录 | 注册

本版积分规则

纳速健身网成立于2006年8月,是国内优秀健身运动网站,现拥浏览人数超30万。网站是集养生、武术、太极拳和健身气功等多种健身项目于一体的多功能交流平台。平台提供大量优质的教学视频、伴奏音乐(太极拳晨练音乐,广场舞音乐,健身气功音乐)、图文教程、运动科普和经验分享,为健身爱好者提供完善的运动指导平台。
  • 纳速QQ群乙:151815303
  • 纳速QQ群丙:79104490
  • 微信交流群:微信好友搜索【nasuwang】加小纳微信进群交流健身知识,备注【纳速】
  •                     或者扫描页面底部右侧二维码添加小纳微信>>>
  • 微信公众号

  • 微信群客服交流

  • Copyright © 2006-2021, 纳速健身网. | | 辽ICP备13002388号-1 辽公安网备21050202000005号公安网备号 纳速武术-乙 QQ