1
我有一個QTablWidget
具有以下屬性:的Python PyQt4的QTableWidget的CellWidget輥列值
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()
請看到我的編輯,我仍然沒有得到任何輸出 –
@ChrisAung。這是因爲你沒有爲單元格設置表格控件項目。我修改了我的答案,使用'indexAt',它更通用,因爲它只是返回'QModelIndex'。 – ekhumoro
完美無缺的工作..謝謝 –