在QTableWidget 点击表头排序后 发现重新加载进来的数据消失或者很多空白 解决方法
排序方法:
void DesignProductWidget::DesignProductWidget()
{
ui.tableWidget->setSortingEnabled(true);
ui.tableWidget->horizontalHeader()->setSortIndicatorShown(true);
connect(ui.tableWidget->horizontalHeader(), SIGNAL(sectionClicked(int)), this, SLOT(on_tablewidget_sectionClicked(int)));
}
void DesignProductWidget::on_tablewidget_sectionClicked(int column)
{
if (m_SortUporDown)
{
ui.tableWidget->sortItems(column, Qt::AscendingOrder);
m_SortUporDown = false;
}
else
{
ui.tableWidget->sortItems(column, Qt::DescendingOrder);
m_SortUporDown = true;
}
}
初始数据:
点击排序之后,再次 加载数据图:
BUG:点击排序后,数据消失了,
ui.tableWidget->setSortingEnabled(true);
解决办法:
在重新加载数据前 关闭我们的 排序:
ui.tableWidget->setSortingEnabled(false);
在加载完数据后,我们重新进行打开我们的排序
ui.tableWidget->setSortingEnabled(true);
如:
ui.tableWidget->setSortingEnabled(false);
//插入数据
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 3; j++)
{
ui.tableWidget->setItem(i, j, new QTableWidgetItem(QString("%1%2").arg(i + 1).arg(j + 1)));
}
}
ui.tableWidget->setSortingEnabled(true);