我有一个具有以下属性的QTablWidget

        mytable.setEditTriggers(QtGui.QTableWidget.NoEditTriggers)
        mytable.setSelectionBehavior(QtGui.QTableWidget.SelectRows)
        mytable.setSelectionMode(QtGui.QTableWidget.SingleSelection)
        mytable.horizontalHeader().setStretchLastSection(True)
        mytable.verticalHeader().hide()


在表格的每一行上,我在QPushButton处设置了一个CellWidget,如下所示:



用户按下任意按钮后,是否有任何方法可以获取Row number所在的表的QPushButton

例如,如果用户单击表QPushButton上的row 2,它将返回值2。

编辑2

根据答案之一,我已经将代码更新为:但是我仍然什么也没得到。我哪里出问题了?我试图打印出self.table.itemAt(button.pos())的输出,但我却得到了None

from PyQt4 import QtGui,QtCore
import sys

class MainWindow(QtGui.QMainWindow):
    def __init__(self, parent=None):
        QtGui.QMainWindow.__init__(self,parent)
        self.table = QtGui.QTableWidget()
        self.table.setColumnCount(3)
        self.setCentralWidget(self.table)
        data1 = ['orange','apple','banana','lemon']
        data2 = ['3','4','5.5','2']

        self.table.setRowCount(4)

        for i in range(4):
            item1 = QtGui.QTableWidgetItem(data1[i])
            self.table.setItem(i,0,item1)
            item2 = QtGui.QTableWidgetItem(data2[i])
            self.table.setItem(i,1,item2)
            self.button = QtGui.QPushButton('TEST')
            self.button.clicked.connect(self.handleButtonClicked)
            self.table.setCellWidget(i,2,self.button)

    def handleButtonClicked(self):
        button = self.sender()
        item = self.table.itemAt(button.pos())
        if item is not None:
            print (item.row(),item.column())


def Main():
    app = QtGui.QApplication(sys.argv)
    main = MainWindow()
    main.show()
    app.exec_()

if __name__ == '__main__':
    Main()

最佳答案

如果您可以获取对单击按钮的引用,则可以使用QTableView.indexAt来获取相应的索引:

    button.clicked.connect(self.handleButtonClicked)
    ...

    def handleButtonClicked(self):
        button = QtGui.qApp.focusWidget()
        # or button = self.sender()
        index = self.table.indexAt(button.pos())
        if index.isValid():
            print(index.row(), index.column())

关于python - Python PyQt4 QTableWidget CellWidget滚动列值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22801771/

10-13 09:41