2014-04-02 34 views
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這樣的:

enter image description here

有沒有什麼辦法可以得到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() 

回答

1

如果你可以得到被點擊的按鈕的引用,然後QTableView.indexAt可以用來獲得相應的索引:

button.clicked.connect(self.handleButtonClicked) 
    ...   

    def handleButtonClicked(self): 
     button = QtGui.qApp.focusWidget() 
     # or button = self.sender() 
     index = self.table.indexAt(button.pos()) 
     if index.isValid(): 
      print(index.row(), index.column()) 
+0

請看到我的編輯,我仍然沒有得到任何輸出 –

+0

@ChrisAung。這是因爲你沒有爲單元格設置表格控件項目。我修改了我的答案,使用'indexAt',它更通用,因爲它只是返回'QModelIndex'。 – ekhumoro

+0

完美無缺的工作..謝謝 –

相關問題