QTableWidget当前选择变化信号

12

QTableWidget的当前选择更改时的信号是什么,我如何为其分配一个槽?

1个回答

14

您想要使用itemSelectionChanged信号:

每当选择更改时,此信号将被发出。

您可以通过像这样做来使用它:

self.itemSelectionChanged.connect(self.print_row)

每次选择更改时,这将调用self.print_row(您创建的函数)。


一个非常基本的例子:

import sys
from PyQt4 import QtGui, QtCore

lista = ['r1c1', 'r1c2', 'r1c3']
listb = ['r2c1', 'r2c2', 'r1c3']
listc = ['r3c1', 'r3c2', 'r3c3']
mystruct = {'row1':lista, 'row2':listb, 'row3':listc}

class MyTable(QtGui.QTableWidget):
    def __init__(self, thestruct, *args):
        QtGui.QTableWidget.__init__(self, *args)
        self.data = thestruct
        n = 0
        for key in self.data:
            m = 0
            for item in self.data[key]:
                newitem = QtGui.QTableWidgetItem(item)
                self.setItem(m, n, newitem)
                m += 1
            n += 1
        self.itemSelectionChanged.connect(self.print_row)

    def print_row(self):
        items = self.selectedItems()
        print(str(items[0].text()))

def main(args):
    app = QtGui.QApplication(args)
    table = MyTable(mystruct, 3, 3)
    table.show()

    sys.exit(app.exec_())

if __name__=="__main__":
    main(sys.argv)
这将创建一个如下的表格:

UI

当你选择任意单元格时,它将打印出该单元格中的文本。请注意,此打印函数假设您每次只选择一个选项。 selectedItems() 函数返回所选择的项目列表,但在此示例中,我仅使用第一个索引。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接