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
}
我不确定是某种 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
}