You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用列表与QTableView结合时触发类型错误

问题解决:QTableView无法直接接收列表数据

错误原因

QTableView的构造函数仅接受可选的父控件参数,不能直接传入数据列表——这就是触发TypeError的核心原因。Qt的表格组件遵循"视图-模型"架构,必须通过数据模型绑定数据源,不能直接把列表传给QTableView。

修复步骤

使用QStandardItemModel作为中间数据模型,将列表数据填充到模型后,再绑定到QTableView上。修改FeedexWindow类的代码如下:

from PySide6.QtWidgets import QWidget, QMainWindow, QPushButton, QTableView, QHBoxLayout, QStandardItemModel, QStandardItem
from datetime import datetime

class FeedexWindow(QMainWindow):
    def __init__(self, data):
        super().__init__()
        self.setWindowTitle(f"FeeDex {__version__}")
        save_button = QPushButton("Save")
        save_button.clicked.connect(self.click_print)

        # 1. 创建数据模型并设置表头
        subs_model = QStandardItemModel()
        subs_model.setHorizontalHeaderLabels(["系列标题", "章节信息", "更新时间"])
        
        # 2. 遍历数据填充模型
        for row_data in data:
            items = []
            for col_data in row_data:
                # 处理datetime对象,转为可读字符串
                if isinstance(col_data, datetime):
                    item_text = col_data.strftime('%Y-%m-%d %H:%M:%S')
                else:
                    item_text = str(col_data)
                items.append(QStandardItem(item_text))
            subs_model.appendRow(items)
        
        # 3. 创建表格并绑定模型
        subs_table = QTableView()
        subs_table.setModel(subs_model)
        # 可选:让列宽自适应内容
        subs_table.resizeColumnsToContents()

        parent_layout = QHBoxLayout()
        parent_layout.addWidget(subs_table)
        parent_layout.addWidget(save_button)

        main_widget = QWidget()
        main_widget.setLayout(parent_layout)
        self.setCentralWidget(main_widget)
    
    def click_print(self):
        # 补充按钮点击方法的基础实现,避免运行报错
        print("保存按钮已点击")

关键说明

  • QTableView是视图组件,仅负责数据展示;数据实际存储在模型组件(如QStandardItemModel)中,两者通过setModel()方法完成绑定。
  • datetime类型无法直接被QStandardItem识别,必须转为字符串格式后再添加到模型。
  • 如果需要更复杂的交互(如数据编辑、自定义排序),可以自定义QAbstractTableModel子类,QStandardItemModel足以满足基础表格展示需求。

内容的提问来源于stack exchange,提问作者DorderaDomo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 19:13:19