当前位置: 首页 > news >正文

关于Qt模型插入最后一行数据中存在未填满的项,点击导致崩溃的解决办法

在使用Qt模型视图框架的时候,你可能会遇见这种情况:给QTableView设置设置模型的时候,网模型里面插入数据,因为数据是一行一行插入的,即要使用modelappandRow函数,但有时候最后一行数据没有填满一行,但是没有填满的那一部分仍然可以点击,如下代码:

while(query.next()){ProductInfo info;info.number = query.value("product_number").toString();info.kind = static_cast<ProductInfo::Kind>(query.value("kind").toInt());info.title = query.value("title").toString();info.description = QJsonDocument::fromJson(query.value("description").toByteArray());info.classification = QJsonDocument::fromJson(query.value("classification").toByteArray());info.image = QJsonDocument::fromJson(query.value("image").toByteArray());info.description_image = QJsonDocument::fromJson(query.value("description_image").toByteArray());QStandardItem* item = new QStandardItem();item->setEditable(false);item->setData(QVariant::fromValue(info),Qt::UserRole + 1);itemList.append(item);if(itemList.size() == MAXCOLUMN){this->m_model->appendRow(itemList);itemList.clear();}
}
this->m_model->appendRow(itemList);

这就会造成隐藏的程序崩溃的风险,如图:

那么该如何解决这个问题?以下为我的解决办法:
 

 if (!itemList.isEmpty()) {// 插入前禁用所有项for (size_t i = itemList.size(); i < MAXCOLUMN; i++){QStandardItem* item = new QStandardItem();item->setFlags(Qt::NoItemFlags);itemList.append(item);}}this->m_model->appendRow(itemList);return query.size();

思路就是:将最后一行用无用项填满。。。OK,问题解决。

http://www.lryc.cn/news/395948.html

相关文章:

  • Interpretability 与 Explainability 机器学习
  • Vue3项目如何使用npm link本地测试组件库
  • 后端之路——阿里云OSS云存储
  • 大模型/NLP/算法面试题总结2——transformer流程//多头//clip//对比学习//对比学习损失函数
  • 【atcoder】习题——位元枚举
  • 世界人工智能大会 | 江行智能大模型解决方案入选“AI赋能新型工业化创新应用优秀案例”
  • css浮动及清除浮动副作用的三种解决方法
  • 图像类别生成数字标签
  • 【Python】已解决:SyntaxError: invalid character in identifier
  • RDNet实战:使用RDNet实现图像分类任务(一)
  • Java小白入门到实战应用教程-介绍篇
  • python脚本“文档”撰写——“诱骗”ai撰写“火火的动态”python“自动”脚本文档
  • 若依 / ruoyi-ui:执行yarn dev 报错 esnext.set.difference.v2.js in ./src/utils/index.js
  • 移动端Vant-list的二次封装,查询参数重置
  • SMU Summer 2024 Contest Round 2
  • Qt:11.输入类控件(QLineEdit-单行文本输入控件、QTextEdit-多行文本输入控件、QComboBox-下拉列表的控件)
  • Qt 音频编程实战项目
  • C#委托事件的实现
  • Java策略模式在动态数据验证中的应用
  • 【Linux】shell基础知识点(updating)
  • Python基础练习•二
  • 智慧科技照亮水利未来:深入剖析智慧水利解决方案如何助力水利行业实现高效、精准、可持续的管理
  • Vue3学习笔记(n.0)
  • 基于Spring Boot的在线考试系统
  • Day65 代码随想录打卡|回溯算法篇---组合总和II
  • C++ 入门03:函数与作用域
  • 在Linux/Debian/Ubuntu中出现“Could not get lock /var/lib/dpkg/lock-frontend”问题的解决办法
  • odoo中的钩子 Hooks
  • 05.C1W4.Machine Translation and Document Search
  • 计算机网络——数据链路层(点对点协议PPP)