QScrollbar setMinimum为负值

时间:2017-11-07 07:46:55

标签: c++ qt qtableview

我有QTableView我需要"锁定"选定的行。要求是必须将所选行移动到表的中间,然后必须禁用表的滚动。

这很容易使用大型模型并在模型中间的某处选择一行:

ui->tableView->scrollTo(ui->tableView->currentIndex(), QAbstractItemView::PositionAtCenter );

但是,如果所选行靠近模型的顶部或底部,则它不会显示在表格的中间。由于无法滚动浏览最后一项。

我查看了表格的QScrollbar

QScrollBar *scrollbar = ui->tableView->verticalScrollBar();
scrollbar->setMaximum( scrollbar->maximum() + scrollbar->singleStep()*10 );

这会在桌子的底部添加十个白色空格,如果我现在"锁定"靠近底部的一行,它将显示在TableView的中间。这很有效。

但是,尝试将空格添加到表格的顶部,似乎无法正常工作:

scrollbar->setMinimum( scrollbar->minimum() - scrollbar->singleStep()*10 );

上面的代码确实添加了空白区域,但它以一些奇怪的行为打破了tableview。数据行是不可见的,只有通过单击它们(选择它们)它们才会再次显示,只有在表失去焦点时才会消失。

QScrollbar::Minimum值是否有限制?我可以不让它消极吗?或者我在这里缺少什么?

0 个答案:

没有答案