所以我使用QTableWidget作为用户的各种记录器,在顶部插入新行,最后在我每秒钟读取更新时最终掉落。
我目前正在运行这3个命令,以防止用户对窗口小部件做任何事情。
summaryTable->setSelectionMode(QAbstractItemView::NoSelection);
summaryTable->setFocusPolicy(Qt::NoFocus);
summaryTable->setEditTriggers(QAbstractItemView::NoEditTriggers);
这样可行,用户无法选择一个框(以后不会突出显示更多内容),无法编辑框,一切都很好。
即使用户点击了一个单元格,即使它没有明显突出显示,仍然有一些东西允许它被选中,以便当该单元格从当前滚动区域下方“推”下来时,从顶部的插入位置开始开始向下滚动以跟随此单元格一直到底部。
显然这很令人困惑,如果用户在几秒钟内点击一个单元格就会一遍又一遍地将它们向下滚动到桌面上,那么它们就会向后滚动并点击标题或其他东西。防止将来滚动。
我如何防止这种情况?我认为通过阻止选择并关闭我所做的事情会阻止它,但是在QT中仍然存在某种类型的选择,即使它跟踪选定的单元格不可见。
答案 0 :(得分:0)
糟糕,没有意识到有一个SetAutoScroll方法,将此设置为false修复了问题。
答案 1 :(得分:0)
此方法可以使用QTableWidget :: scrollToItem()或 QTableWidget :: scrollTo()将起作用:)
答案 2 :(得分:0)
您可以通过将行索引设置为 -
来手动滚动项目self.ui.tableWidget.verticalScrollBar().setValue(index)
或
您可以按当前索引自动滚动项目:
row = self.ui.tableWidget.currentIndex().row()
self.ui.tableWidget.verticalScrollBar().setValue(row)