整数QTableWidget的(QTableWidget Integer)

2019-07-02 15:06发布

我试图插在我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对象

任何洞察理解。

Answer 1:

你在正确的轨道上。 您的代码不工作,因为你没有调用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_())


文章来源: QTableWidget Integer