如何知道QPushButton属于哪个QTableWidget?
我有两个 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,它们的按钮都连接到同一个函数。
那么,当按钮被点击时,我该如何知道这个按钮是属于表格 A 还是表格 B 呢?
2 个回答
1
如果按钮和表格控件之间的父子关系设置得当(大概率是这样),你可以使用QPushButton的parent()
方法来获取QTableWidgetItem,然后再对这个项目使用相同的方法来获取QTableWidget。
4
正如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写的,但应该适用于所有的Python和PyQt。
补充说明:如果你没有直接从QTableWidget
继承,而是QTableWidget
和按钮都是另一个对象的子对象,那么你只需在共同的父对象中用一个已知的名字(比如“table”)存储对表格的引用,然后可以这样访问:
button.parent().table