我有两个QTableWidgetItems
。每个都有多个QPushButtons
设置为单元格小部件。
目前,对于一个QTableWidget
我正在使用self.sender()
查找正在按下的按钮的行和列:
button = self.sender()
index = self.Table.indexAt(button.pos())
currentRow = index.row()
mydata = str(self.Table.item(currentRow, 2).text())
但是,我想将两个表的QpushButtons
连接到同一个函数。所以,如果我有表A和表B都将QPushButtons连接到同一个函数。
如何在点击按钮时知道某个按钮属于表A还是表B?
答案 0 :(得分:2)
正如Matyas Kuti所说,你可以使用parent
。我为它做了一个例子。
from PySide import QtGui
class MyTableWidget(QtGui.QTableWidget):
def __init__(self):
super().__init__(None)
button = QtGui.QPushButton('Click me', self)
button.clicked.connect(self.buttonClicked)
self.setCellWidget(2, 1, button)
def buttonClicked(self):
button = self.sender()
print(button.parent() is self)
app = QtGui.QApplication([])
table = MyTableWidget()
table.show()
app.exec_()
单击按钮时输出为True
。示例在Python 3.X和PySide中,但也应该适用于所有Pythons和PyQt。
编辑:如果您没有直接从QTableWidget
继承,但QTableWidget
和按钮都是另一个对象的子项,只需在公共父级下以已知名称存储对该表的引用(例如" table")然后访问如下:
button.parent().table
答案 1 :(得分:1)
如果在按钮和表格小部件之间正确设置了父子关系(很可能是这样),您可以使用QPushButton的parent()
方法访问QTableWidgetItem并在项目上使用相同的功能来访问QTableWidget。