QTableView,显示隐藏行时出现故障

QTableView, glitch on showing hidden rows

我不确定是某种 bug\glitch 还是我做错了什么。 我在 table 中有一些隐藏的行,单击时我希望它们出现,但结果您可以在下图中看到。

此效果仅在滑块滚动到末尾时出现。如果我将焦点转移到另一个 window 或者当我向上滚动 table 直到它消失在视线之外时,故障就会消失。

这是我的代码:

connect(tableView_, SIGNAL(clicked(const QModelIndex &)), this,
    SLOT(onTableClicked(const QModelIndex &)));

for(int i = 0; i < table_->rowCount(); i++)
{
    if(i%table_->typesNumber())
        tableView_->hideRow(i);
}

...

void DumpsComparisonWindow::onTableClicked(const QModelIndex& index)
{
   ...
   tableView_->showRow(index.row() + i);
   ...
}

更新: 以便测试我已经创建了项目的剪切版本,您可以在这里找到它:https://gitlab.com/JuicyPussy/qtableview_glitch

显示或隐藏任何行后,让模型通知所有视图的布局更改。您可以通过调用 layoutChanged.

void DumpsComparisonWindow::onTableClicked(const QModelIndex& index)
{
   ...
   tableView_->showRow(index.row() + i);
   ...
   table_->layoutChanged(); //add this
}