QTableWidget整数
我正在尝试在我的QTableWidget中插入并显示整数。它们不显示。如果我将所有内容都转换为字符串,则可以使用它,但是我无法对列进行数字排序,只能按词法排序(1、10、100等)。这是使用PyQt。
我已经尝试了一些建议的解决方案,使用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)
另外,有关回读数据的建议仅显示对象位置,而不显示实际数据。使用Eric作为解释器shell的示例:
item.data(Qt.DisplayRole)
响应:PyQt4.QtCore.QVariant对象位于0x1f01fa60
或这个:
item.data(Qt.EditRole).data()
响应:sip.voidptr对象位于0x1e904a80
任何见解均表示赞赏。
-
您走在正确的轨道上。您的代码无效,因为您没有调用
QTableWidgetItem
的setData()
功能,而是试图为其分配一个值。你有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_())