繁体   English   中英

如何找出QPushbutton属于哪个QTableWidget?

[英]How to find out to which QTableWidget a QPushbutton belongs to?

我有两个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?

正如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

如果在按钮和表窗口小部件之间正确设置了父子关系(很可能是这样),则可以使用QPushButton的parent()方法访问QTableWidgetItem,并在该项目上使用相同的函数访问QTableWidget。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM