2014-09-12 15 views
0

我正在使用Python和pyqt4。 我的QTableWidget允許用戶選擇多個單元格。 對於QTableWidget中的單個特定行&列單元格,我需要讀取該單元格是由用戶選擇突出顯示還是未突出顯示。 什麼是pyqt調用來讀取單元格的選擇/高光值?使用Python在QTableWidget中獲取特定行和列的單元格突出顯示pyqt4

編輯:我需要做它沒有信號/槽呼叫。我只是有一個QTableWidget和一個行和列號,我需要得到,如果該單元格被選中或沒有。

回答

0

使用list-of-QTableWidgetItem QTableWidget.selectedItems (self)可以從用戶選擇或高亮顯示中選擇項目。並處理信號void itemSelectionChanged()做項目選擇改變時做;

import sys 
from PyQt4 import QtGui 

class QCustomTableWidget (QtGui.QTableWidget): 
    def __init__ (self, parentQWidget = None): 
     super(QCustomTableWidget, self).__init__(parentQWidget) 
     self.setColumnCount(2) 
     self.setRowCount(3) 
     self.setItem(0, 0, QtGui.QTableWidgetItem('Test 1')) 
     self.setItem(0, 1, QtGui.QTableWidgetItem('Test 2')) 
     self.setItem(1, 0, QtGui.QTableWidgetItem('Work 1')) 
     self.setItem(1, 1, QtGui.QTableWidgetItem('Work 2')) 
     self.setItem(2, 0, QtGui.QTableWidgetItem('Area 1')) 
     self.setItem(2, 1, QtGui.QTableWidgetItem('Area 2')) 
     self.itemSelectionChanged.connect(self.itemSelectionChangedCallback) 

    def itemSelectionChangedCallback (self): 
     print '#' * 80 
     for currentQTableWidgetItem in self.selectedItems(): 
      print currentQTableWidgetItem.row(), currentQTableWidgetItem.column(), currentQTableWidgetItem.text() 

if __name__ == '__main__': 
    myQApplication = QtGui.QApplication(sys.argv) 
    myQCustomTableWidget = QCustomTableWidget() 
    myQCustomTableWidget.show() 
    sys.exit(myQApplication.exec_()) 

編輯:我需要做的是沒有信號/插槽調用。我只是有一個 QTableWidget和一個行號和列號,我需要得到,如果 單元格被選中或沒有。

在PyQt4中只有方法bool QTableWidget.isItemSelected (self, QTableWidgetItem item)可用。如果要使用行&列的索引,則必須創建自己的新方法。使用使用list-of-QTableWidgetItem QTableWidget.selectedItems (self)作爲檢查行和列匹配;

class QCustomTableWidget (QtGui.QTableWidget): 
    . 
    . 
    . 

    def isItemSelectedByIndex (self, row, column): 
     isSelection = False 
     for currentQTableWidgetItem in self.selectedItems(): 
      if (row, column) == (currentQTableWidgetItem.row(), currentQTableWidgetItem.column()): 
       isSelection = True 
       break 
     return isSelection 
+0

我應該澄清...我需要做到這一點,沒有信號/插槽調用。我只是有一個qtablewidget和一個行號和列號,我需要得到該單元格是否被選中。 – panofish 2014-09-13 15:19:24

+0

您可以使用'list-of-QTableWidgetItem QTableWidget.selectedItems(self)'獲取所有選定的項目。你可以在這裏檢查它。 – 2014-09-13 17:16:41

相關問題