1

我刚开始使用python,所以遇到了问题。我到处搜索,我得出了这个结论:我使用 QT-Designer 制作了一个简单的 GUI。填写 tableWidget 后,我​​想要的只是自动滚动到第 10 行,我这样成功:

for i in range(0, self.rows):
    ...filling table...
self.ui.tableWidget.scrollToItem(self.ui.tableWidget.item(10, 3), QtGui.QAbstractItemView.PositionAtCenter)
self.ui.tableWidget.scrollToItem(self.ui.tableWidget.selectRow(10), QtGui.QAbstractItemView.PositionAtCenter)

问题:如果没有第 3 行或第 4 行,这将不起作用。正如我所说,我是 Python 新手,所以好的解释或建议对我来说意义重大。

4

1 回答 1

3

所以,这一行:

self.ui.tableWidget.scrollToItem(self.ui.tableWidget.item(10, 3), QtGui.QAbstractItemView.PositionAtCenter)

会起作用,因为你会因为执行 self.ui.tableWidget.item(10, 3) 而得到一个项目

self.ui.tableWidget.scrollToItem(self.ui.tableWidget.selectRow(10), QtGui.QAbstractItemView.PositionAtCenter)

该行不起作用-因为您在这里尝试做的是选择界面中的行,该行具有 None (void) 值返回

您必须进行两次通话,第一次滚动到该项目,然后选择该行(或您想要的任何顺序,顺序无关紧要)

item = self.ui.tableWidget.item(10, 3)
self.ui.tableWidget.scrollToItem(item, QtGui.QAbstractItemView.PositionAtCenter)
self.ui.tableWidget.selectRow(10)

在 C++ 中你会得到一个错误,但在 Python 中,一个 void 返回的方法将返回 None,这与将 NULL 指针传递给 scrollToItem 方法相同。

于 2012-09-04T17:03:53.360 回答