当前位置: 首页 > 面试题库 >

QTableWidget整数

宣意致
2023-03-14
问题内容

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

任何见解均表示赞赏。


问题答案:

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


 类似资料:
  • 问题内容: 这是我用来填写QT Designer中绘制的表格的代码。设计为对任何表通用,它可以正常工作,但是…当我尝试显示包含18列和〜12000行的datasat时,它冻结30秒或更长时间。因此,我做错了什么,有没有办法加快速度,保持代码仍然适合任何表? 那是我的代码: 问题答案: 这里是一个测试脚本,它比较了几种填充表格的方法。 自定义模型要快得多,因为它不必先创建所有项- 但请注意,这是一个

  • 问题内容: 我有一个QTableWidget,我将此表中的数据导出到一个csv文件中。但是现在,我想打开一个现有的csv文件,并使用此数据填充我的表。我该怎么做? 这是我的导出代码,我想要一个“填充”代码,我真的不知道该怎么做。.我知道如何读取一个csv,但我不知道如何用此csv数据填充我的表。 问题答案: 看起来您可以在此处使用该模块: PyQt5版本:

  • 在将数据从行编辑输入到QTableWidget后,如何使用数据库检查Tableview中的重复数据?

  • 问题内容: 无论如何在qtablewidget中添加像按钮一样的内容?但是必须在单元格中显示日期,例如,如果用户双击某个单元格,我是否可以像按钮一样发送信号?谢谢! edititem(): 表触发器: 问题答案: 您有几个问题可以归结为一个…简短答案,是的,您可以向QTableWidget添加按钮- 您可以通过调用setCellWidget将任何窗口小部件添加到表格窗口小部件: 但这听起来并不像您

  • 因此,我试图编写一个代码,将csv文件加载到每个选项卡上的QTableWidget中,然后可以在其顶部编辑和保存。然而,当我保存时,程序由于各种原因崩溃。虽然没有设置自动加载,但我试图一次解决一个问题! 我看到过很多帖子似乎都在问同样的问题,但在实现它们时,它们似乎不起作用,有些是因为它们使用tableview而不是QTableWidget,有些可能是因为我没有正确地实现它,因为我还不熟悉编码。

  • 问题内容: 我想在其中捕获返回键,以便对当前标记的单元格执行某些操作。那就是:我希望用户在任何单元格处于高亮状态时按下键盘上的“返回/输入”键。按下该按钮应发出一种新方法。例如,显示带有该单元格内容的消息框。 如何将按回车键的事件连接到方法? 由于我是python的新手,所以我不知道该怎么做,并且感谢任何建议。 问题答案: 您的问题有点模棱两可。“捕捉返回键”是什么意思?有几种返回信息的方法。 如