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

Qt待办应用:如何通过QUiLoader将TodoModel值显示到QLineEdit?

问题解决方法

核心错误原因

QLineEdit 类并没有 setModel() 方法,这是触发 AttributeError 的直接原因。模型(QAbstractListModel 子类)是为视图类设计的(比如 QListView、QComboBox),QLineEdit 作为单行文本输入控件,不支持直接绑定模型。

解决方案1:直接从模型取数据显示到QLineEdit

直接从 TodoModel 中获取对应行的文本,设置到 QLineEdit 即可,同时先修正原代码的缩进错误(Python类的方法必须缩进):

修正后的完整代码

from PySide6 import QtCore
from PySide6.QtUiTools import QUiLoader
from PySide6.QtWidgets import QApplication
from PySide6.QtCore import QAbstractListModel, Qt

loader = QUiLoader()

class TodoModel(QAbstractListModel):
    def __init__(self, todos=None):
        super().__init__()
        self.todos = todos or []

    def data(self, index, role):
        if role == Qt.DisplayRole:
            status, text = self.todos[index.row()]
            return text

    def rowCount(self, index):
        return len(self.todos)

class MainWindow(QtCore.QObject):
    def __init__(self):
        super().__init__()
        self.wid = loader.load("todo.ui", None)
        self.model = TodoModel(todos=[(False,"hello world")])
        # 从模型中获取第0行的文本,设置到lineEdit
        if self.model.rowCount(QtCore.QModelIndex()) > 0:
            index = self.model.index(0)
            todo_text = self.model.data(index, Qt.DisplayRole)
            self.wid.lineEdit.setText(todo_text)
        self.wid.show()

app = QApplication([])
ui = MainWindow()
app.exec()

解决方案2:改用支持模型绑定的控件(如果需要动态更新)

如果需要文本随模型数据动态更新,建议把UI中的 QLineEdit 换成 QComboBox(或 QListView),这类控件支持绑定模型,修改后的MainWindow代码如下:

class MainWindow(QtCore.QObject):
    def __init__(self):
        super().__init__()
        self.wid = loader.load("todo.ui", None)
        self.model = TodoModel(todos=[(False,"hello world")])
        # 假设UI中是comboBox控件,调用setModel绑定
        self.wid.comboBox.setModel(self.model)
        self.wid.show()

额外注意点

  • 确保你的 todo.ui 文件中确实存在名为 lineEdit(或对应控件名)的控件,否则会触发找不到属性的错误。
  • 原代码中 TodoModel 的方法没有缩进,这在Python中会导致方法不属于类,必须修正缩进才能正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 20:15:50