【发布时间】:2018-04-11 11:29:16
【问题描述】:
我正在使用 QtableView 和 QStandardItemModel 在 GUI 上显示日志以保持适当的间距和过滤日志。我创建了模型并将数据插入其中。使用 QSortFilterProxyModel 过滤字符串。
self.tableView = QtGui.QTableView(self)
self.model = QtGui.QStandardItemModel(self)
self.proxy = QtGui.QSortFilterProxyModel(self)
self.proxy.setSourceModel(self.model)
self.tableView.setModel(self.proxy)
在一秒钟内,预计会有近 100 条日志显示在 GUI 上。添加新日志时,视图不会自动滚动,滑块仅停留在顶部。它不会给日志带来实时感觉,用户需要手动滚动到最后。所以为了克服这个问题,我使用了以下语法,
self.model.rowsInserted.connect(lambda: QtCore.QTimer.singleShot(5, self.tableView.scrollToBottom))
它为日志提供了生动的感觉,但滑块始终位于底部,我无法向上滚动查看以前的日志。每当我尝试移动滑块时,它会立即再次下降到底部。所以这个语法不符合我的要求。在 QTextEdit 中,自动滚动是正确且用户友好的。我想在 QtableView 上使用相同的场景。有没有类似于 QTextEdit 的自动滚动的替代方法?
【问题讨论】:
-
QTableView 还是 QTreeView?
-
QTableView @eyllanesc
-
为什么要使用代理?
-
用于过滤日志字符串
-
如果您在 QTextEdit 中注意到滚动条的位置取决于光标的位置,我正在考虑对所选行的位置执行相同的操作,但使用您的过滤器逻辑是不可能的。
标签: python-2.7 pyqt pyqt4 qt-designer qtableview