我试图插在我QTableWidget的显示整数。 他们不显示。 它的工作原理,如果我转换的一切字符串,但我不能列数值排序 - 只有词汇(1,10,100,等)。 这是使用PyQt的。
我已经尝试了一些建议的解决方案,采用QTableWidgetItem.setData(someRole,的intValue),BU然后什么都没有显示。 我试过,Qt.UserRole,DisplayRole和编辑角色。 (我不明白为什么需要这些角色来显示整数,但只是跟着例子)。 我的具体代码如下:
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)
回应:在0x1f01fa60 PyQt4.QtCore.QVariant对象
或这个:
item.data(Qt.EditRole)。数据()
回应:在0x1e904a80 sip.voidptr对象
任何洞察理解。
你在正确的轨道上。 您的代码不工作,因为你没有调用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_())