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

如何在Valentina Studio表单设计中为ListView程序化添加值?

解决Valentina Studio表单中ListView动态添加LineEdit输入值的方案

Valentina Studio的ListView默认绑定数据库相关数据源(视图、查询、预定义自定义列表),底层用的是只读SQL模型,直接调用addItem()这类QT方法自然无效。要实现无临时表的动态添加,核心是替换成内存可编辑的字符串模型,具体步骤如下:

1. 初始化内存数据模型

在表单的On Create信号中添加脚本,创建QStringListModel并绑定到ListView:

# 替换成你的ListView对象名
self.list_view_model = QStringListModel()
self.your_list_view.setModel(self.list_view_model)

这一步会覆盖ListView默认的数据源绑定,让它改用内存中的字符串列表存储数据。

2. 实现输入值添加逻辑

给LineEdit的ReturnPressed信号(或添加按钮的Clicked信号)绑定处理脚本,获取输入内容并添加到模型:

# 替换成你的LineEdit对象名
input_text = self.your_line_edit.text().strip()
if input_text:
    # 获取当前列表行数,插入新行
    row_count = self.list_view_model.rowCount()
    self.list_view_model.insertRow(row_count)
    # 设置新行的文本值
    self.list_view_model.setData(self.list_view_model.index(row_count), input_text)
    # 清空输入框(可选)
    self.your_line_edit.clear()

关键说明

  • 必须替换模型:Valentina默认给ListView绑定的是SQL相关模型,不支持直接添加项,只有内存模型才能实现动态编辑
  • 组件对象名要准确:脚本中通过self.对象名访问组件,确保设计时给ListView和LineEdit设置了正确的对象名
  • 无需临时表:此方案全程在内存中操作数据,适合临时列表场景;如果需要持久化,可后续将模型数据导出到配置文件或其他存储,不用依赖数据库表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 14:52:06