转到 QTableWidget 上可视单元格的位置

Posted

技术标签:

【中文标题】转到 QTableWidget 上可视单元格的位置【英文标题】:Go To Position of Visual Cell on QTableWidget 【发布时间】:2017-11-29 04:37:53 【问题描述】:

我在 PyQT5 中有一个 QTableWidget,我需要转到表格的特定视觉位置。

我该怎么做?

当我说视觉时,我的意思是给出行和列,然后在表格上直观地看到给定的行和列

【问题讨论】:

您能解释一下您所说的转到表格中的某个位置是什么意思吗? 假设我想查看第 20 行和第 20 列,那么表格小部件必须直观地显示该位置 让我们看看我是否理解你,因为表格有很多元素,只有一些项目是可见的,那么你想让我通过移动滚动条来给一个行和列这个项目是可见的。我是对的? 是的,这就是我想要的 ¿QTableWidget 还是 QTableView? 【参考方案1】:

你必须使用scrollToItem方法,在下一部分我展示一个例子:

class Widget(QWidget):
    def __init__(self, *args, **kwargs):
        QWidget.__init__(self, *args, **kwargs)
        hlayout = QHBoxLayout()
        self.rbox = QSpinBox(self)
        self.cbox = QSpinBox(self)
        hlayout.addWidget(self.rbox)
        hlayout.addWidget(self.cbox)
        vlayout = QVBoxLayout(self)
        vlayout.addLayout(hlayout)

        nrows = 50
        ncols = 30
        self.rbox.setMaximum(nrows-1)
        self.cbox.setMaximum(ncols-1)

        self.table = QTableWidget(nrows, ncols, self)
        vlayout.addWidget(self.table)
        for r in range(nrows):
            for c in range(nrows):
                it = QTableWidgetItem("-".format(r, c))
                self.table.setItem(r, c, it)

        self.rbox.valueChanged.connect(self.moveToItem)
        self.cbox.valueChanged.connect(self.moveToItem)

    def moveToItem(self):
        it = self.table.item(self.rbox.value(), self.cbox.value())
        self.table.scrollToItem(it)

if __name__ == '__main__':
    import sys

    app = QApplication(sys.argv)
    w = Widget()
    w.show()
    sys.exit(app.exec_())

【讨论】:

以上是关于转到 QTableWidget 上可视单元格的位置的主要内容,如果未能解决你的问题,请参考以下文章

在pyqt中隐藏qtablewidget中选定单元格的边框?

单击qTableWidget pyqt5中的特定单元格后,特定单元格的背景颜色没有改变

QTableWidget 在调整内容时尊重跨度

如何将文本与 QTableWidget 中的单元格中心对齐

如何将文本与 QTableWidget 中的单元格中心对齐

自动调整 QLabel 的大小以适应更新的 QTableWidget 跨度