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

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

时间:2024-07-09 21:55:16浏览次数:22  
标签:info 解决办法 填满 Qt value item itemList query description

在使用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,问题解决。

标签:info,解决办法,填满,Qt,value,item,itemList,query,description
From: https://blog.csdn.net/m0_74091159/article/details/140307697

相关文章

  • Qt:10.显示类控件(QLabel-显示文本或图像的控件、QLCDNumber -显示数字的特殊控件、QPr
    目录一、QLabel-显示文本或图像的控件:1.1QLabel介绍:1.2设置文本格式——textFormat属性:1.3设置图片——pixmap属性:1.4自动缩放——scaledContents属性:拓展:resizeEvent方法:1.5内容对齐方式——alignment属性:1.6自动换行——wordWrap属性:1.7 文本缩进——indent属性......
  • QT入门看这一篇就够(详解含qt源码)
     目录一、Qt概述1.1什么是Qt1.2Qt的发展史1.3Qt的优势1.4Qt版本1.5成功案例二、创建Qt项目2.1使用向导创建2.2一个最简单的Qt应用程序2.2.1main函数中2.2.2类头文件2.3.pro文件2.4命名规范 2.5QtCreator常用快捷键三、Qt按钮小程序3.1按钮的创建......
  • QT实现wifi信号强弱图标
            Qt界面中绘制WiFi信号强弱图标。模拟类似手机的WIFI强度图标的绘制,比较简单,欢迎参考。一、简述        使用Qt实现WIFI信号图标。二、效果  三、核心代码  1、头文件#ifndefWIFIICON_H#defineWIFIICON_H#include<QWidget>classW......
  • QT设置回调函数给python调用——参数法
    这种方法将回调函数作为python函数参数对象的方法来使用。Qt已经添加了Python库,并且能够正常调用Python的API,可以成功调用Python的代码块,这部分可以参考我另外一篇博客:QT中调用python中的函数-Henkk-博客园(cnblogs.com)1.QT相关函数定义1.1创建回调函数例如下面两个函......
  • VsCode崩溃无法打开解决办法
    今天打开电脑点开vscode突然不能使用了每次点开都闪退,于是查找解决办法直接重启电脑这个方法没有解决问题删除软件重新安装软件软件删干净之前保存下自己的配置文件比如扩展和settings.json和keybinding.jsonMac系统在/Users/用户名/.vscode/extensions和/Us......
  • Qt 控件的简单实例化
    记录一个初学小白的学习过程,记录一些浅显的学习笔记GroupBoxGroupBox控件的作用是组织界面元素,将一组相关的控件组合在一起,并在顶部显示一个标题。基类:QWidget (第一部分是widget.h)(第二部分是widget.cpp)#ifndefWIDGET_H#defineWIDGET_H#include<QWidget>#inc......
  • [QT入门]标签控件(QLabel)
    一、概述QLabel是Qt中用于显示文本或图像的控件。它通常被用作标签或显示静态信息的区域。QLabel控件是图形用户界面(GUI)开发中的基础元素之一,广泛应用于各种Qt应用程序中。QLabel控件的灵活性和易用性使其成为开发过程中不可或缺的一部分。二、QLabel控件的基本属性和方法1.......
  • 构建 Qt 项目
    使用qmake构建Qt项目源代码创建一个Qt项目文件(.pro文件)和一个源文件:MyQtProject.pro:QT+=coreguiCONFIG+=c++11SOURCES+=main.cpp#如果你有UI文件或头文件,也可以添加到这里。#HEADERS+=mainwindow.h#FORMS+=mainwindow.uimain.cpp:#inc......
  • QT中调用python中的函数
    1.创建py文件例如名为“python_script.py”的python文件:#python_script.pydefgreet(name):return"Hello,"+name+"!" 2.Qt的pro文件中包含python的头文件和库INCLUDEPATH+=python解释器的安装目录\includeLIBS+=-Lpython解释器的安装目录\libs-lpyt......
  • Win11系统提示找不到JSC.Resources.dll文件的解决办法
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个JSC.Resources.dll文件(挑选合适的版本文件)......