我正在尝试在我的QTableWidget中插入和显示整数。它们不会显示。如果我将所有内容都转换为字符串,但不能对列进行数字排序--只能按词法排序(1、10、100等),那么它就可以工作。这是在使用PyQt。
我已经尝试了一些建议的解决方案,使用QTableWidgetItem.setData(someRole,intValue),但是没有任何显示。我试过了,Qt.UserRole,DisplayRole和编辑角色。(我不明白为什么需要这些角色来显示整数,但我只是遵循了示例)。我的具体代码是:
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).data()
返回: 0x1e904a80处的sip.voidptr对象
任何洞察力都是值得欣赏的。
发布于 2012-10-26 20:59:02
你走在了正确的道路上。您的代码不能正常工作,因为您没有调用QTableWidgetItem的setData()函数,而是试图为它赋值。
item.setData = (Qt.DisplayRole,intValue)而不是
item.setData(Qt.DisplayRole,intValue)此外,在回读数据时,不仅显示位置,而且将数据本身显示为QVariant。您会发现,通过转换QVariant (通过其.toString()方法),item.data(Qt.DisplayRole).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_())https://stackoverflow.com/questions/13074035
复制相似问题