QTableWidget整数

时间:2012-10-25 17:30:22

标签: python integer pyqt qtablewidgetitem

我正在尝试在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)

响应:0x1f01fa60处的PyQt4.QtCore.QVariant对象

或者这个:

item.data(Qt.EditRole)。数据()

响应:sip.voidptr对象位于0x1e904a80

感谢任何见解。

1 个答案:

答案 0 :(得分:10)

你走在正确的轨道上。您的代码无效,因为您没有调用QTableWidgetItem的{​​{1}}函数,而是尝试为其分配值。

setData()

而不是

item.setData = (Qt.DisplayRole,intValue)

此外,在回读数据时,不仅仅是显示的位置,而且数据本身也是QVariant。您应该会发现item.setData(Qt.DisplayRole,intValue) 会将您的数据作为字符串返回,方法是转换item.data(Qt.DisplayRole).toString()(通过其QVariant方法)。

这是一个快速工作的例子,只是为了演示:

.toString()