【发布时间】:2011-10-31 22:25:51
【问题描述】:
我有一个像这样填充的 QTableWidget:
// Clear the table
this->topPatchesTableWidget->setRowCount(0);
this->topPatchesTableWidget->setRowCount(numberToDisplay);
for(unsigned int pairId = 0; pairId < numberToDisplay; ++pairId)
{
// Display patch match scores
QTableWidgetItem* myLabel = new QTableWidgetItem;
myLabel->setData(Qt::DisplayRole, myValues[pairId]);
this->tableWidget->setItem(pairId, 0, myLabel);
... fill other columns ...
}
(我有一些其他 UI 元素来设置计算 myValues 中的值的属性)。如果我更改属性、重新计算并重新创建表,一切都会按预期工作。如果我通过单击其中一个标题对表格进行排序,则排序正确。但是,如果此时(排序后)我再次单击按钮以重新计算值并重新创建表,则该表非常损坏。也就是说,许多单元格是空的,而不是空的单元格似乎没有任何特定的顺序。
通过添加手动调用
this->tableWidget->sortByColumn(0, Qt::AscendingOrder);
在我的 CreateTable 函数开始时,一切都按预期工作,但当然,新创建的表是按列 0 排序的,而不是最后一次排序时选择的列。
有没有人知道为什么如果不调用 sortByColumn 会出现如此糟糕的情况? (我试图做一个简单的例子,但我无法在演示程序中复制问题)。
谢谢,
大卫
【问题讨论】:
-
现在有一个关于这个的错误报告:bugreports.qt.io/browse/QTBUG-75479