QTableWidget整数

发布于 2021-01-29 17:40:11

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

任何见解均表示赞赏。

关注者
0
被浏览
43
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

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


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看