我在PyQt4上有关于QTableWidget的问题。假设我有一个QTableWidget,我希望将一个事件连接到一个单元格点击使用:
table.cellClicked.connect(cellClick)
然后, cellClick 功能完成其工作。问题是:一些单元格包含一个按钮,就像这样(坐标0,0作为例子):
button = QtGui.QPushButton()
table.setCellWidget(0,0, button)
现在出现了我的问题。单元格中的按钮(占据整个单元格空间)的存在完全禁用 cellClicked - 单元格未被单击,无法检测到该操作。但我确实希望我的按钮能够填充单元格。
所以,简而言之,我的问题是 - 当里面有一个按钮时,如何选择(点击)一个QTableWidget单元?
答案 0 :(得分:4)
简单的答案似乎是:
button.clicked.connect(cellClick)
但是,您如何知道单击的单元格的行/列?所以下一次迭代可能是:
button = QtGui.QPushButton()
table.setCellWidget(row, column, button)
button.clicked.connect(
lambda *args, row=row, column=column: cellClick(row, column))
如果表是静态的,那也没关系。但是如果可以重新排列行和列呢?在这种情况下,按钮的clicked
处理程序中缓存的行/列可能无效。所以下一次迭代可能是:
index = QtCore.QPersistentModelIndex(table.model().index(row, column))
button.clicked.connect(
lambda *args, index=index: cellClick(index.row(), index.column()))
(注意:你可以将其他插槽连接到按钮的clicked
信号,但是它们将被调用的顺序是未定义的)