2012-10-25 3 views
1

QTableWidget에 정수를 삽입하고 표시하려고합니다. 그들은 표시되지 않습니다. 모든 것을 문자열로 변환하면 작동하지만, 열을 수치순으로 정렬 할 수는 없습니다. 어휘 적으로 만 (1, 10, 100 등) 정렬 할 수 있습니다. 이것은 PyQt를 사용하고 있습니다.QTableWidget 정수

QTableWidgetItem.setData (someRole, intValue)를 사용하여 몇 가지 제안 된 솔루션을 시도했지만 그 다음에는 전혀 표시되지 않습니다. 나는 Qt.UserRole, DisplayRole 및 Edit Role을 시도했다. (나는 왜 이러한 역할들이 정수를 표시하는 데 필요한지 이해하지 못하고 다만 예제를 따라 갔다.) 내 특정 코드는 다음과 같습니다

item = QTableWidgetItem() 
    item.setData = (Qt.DisplayRole,intValue) 
    myTable.setItem(row, column, item) 

다음 코드는 작동하지만, 단지 문자열 :

item = QTableWidgetItem(str(intValue)) 
    myTable.setItem(row, column, item) 

또한, 데이터를 다시 읽기를위한 제안 만 개체의 위치가 아닌 실제 데이터가 표시됩니다. 예 통역자 쉘로 에릭 사용 :

item.data (Qt.DisplayRole)

응답 : PyQt4.QtCore.QVariant 객체 0x1f01fa60

이나 본 :

item.data을 (Qt.EditRole) .DATA()

응답 : 0x1e904a80

상관 인사이트 sip.voidptr 목적은 이해된다.

답변

6

올바른 길을 가고있었습니다. QTableWidgetItemsetData() 함수를 호출하지 않고 값을 할당하려고하므로 코드가 작동하지 않습니다. 당신은

item.setData = (Qt.DisplayRole,intValue) 

대신

item.setData(Qt.DisplayRole,intValue) 

데이터를 다시 읽을 때 또한, 그냥 같이있어 위치하지만 QVariant으로 데이터 자체 아니다

있습니다. item.data(Qt.DisplayRole).toString()QVariant ( .toString() 메소드를 통해)을 변환하여 데이터를 문자열로 반환한다는 것을 알아야합니다.

여기에 단지 보여주기 위해 빠른 작업 예제 :

import sys 
from PyQt4.QtGui import QApplication, QWidget, QTableWidget, QTableWidgetItem, QVBoxLayout 
from PyQt4.QtCore import Qt 

class Widget(QWidget): 
    def __init__(self, parent=None): 
     QWidget.__init__(self, parent) 

     self.widget_layout = QVBoxLayout() 
     self.table_widget = QTableWidget(101, 1) 
     self.table_widget.setSortingEnabled(True) 

     self.widget_layout.addWidget(self.table_widget) 
     self.setLayout(self.widget_layout) 

     for num in xrange(101): 
      item = QTableWidgetItem() 
      item.setData(Qt.EditRole, num) 
      self.table_widget.setItem(num, 0, item) 


if __name__ == '__main__': 
    app = QApplication(sys.argv) 
    widget = Widget() 
    widget.show() 
    sys.exit(app.exec_()) 
+0

그것은 작동합니다! 게리 고마워. 비록 내가 아직도 역할이 제대로 작동하는지에 대해서 확신 할 수는 없지만. –