首页 > 编程语言 >QT C++ 解决调试运行时报 The inferior stopped 错误

QT C++ 解决调试运行时报 The inferior stopped 错误

时间:2024-12-02 16:55:47浏览次数:9  
标签:QT tableView C++ sharedSelectionModel 报错 MyTableView setModel model inferior

(1)报错信息和报错时调用堆栈

SignaI Received - Qt Creator

The inferior stopped because it received a signal from the operating system.
Signal name: SIGSEGV
Signal meaning:Segmentation fault报错时调用堆栈停留在 void MyTableView::setModel() 函数的该行:

报错时调用堆栈停留在 void MyTableView::setModel() 函数的该行:
    // 设置共享选择模型
    tableView->setSelectionModel(sharedSelectionModel);

// 函数代码
void MyTableView::setModel(QStandardItemModel *model) {
    tableView_model = model;
    tableView->setModel(model);
    listView_model = tableView_model;

    listView->setModel(listView_model);
    iconView->setModel(listView_model);

    // 创建共享选择模型。创建时需要使用 model变量,所以必须放在这里
    if (!sharedSelectionModel) {  // 避免重复创建
        sharedSelectionModel = new QItemSelectionModel(model, this);
    }

    // 设置共享选择模型
    tableView->setSelectionModel(sharedSelectionModel);
    tableView->resizeColumnsToContents();  // 自动调整列宽
    listView->setSelectionModel(sharedSelectionModel);
    iconView->setSelectionModel(sharedSelectionModel);
}

 

  

(2)报错原因分析

      原因是sharedSelectionModel变量非法,因为下面的判断导致sharedSelectionModel变量没有被正常创建。
      因为sharedSelectionModel在 mytableview.h 定义为:
      QItemSelectionModel *sharedSelectionModel;
      在 MyTableView 构造函数中也未初始化。默认情况下,sharedSelectionModel 的值为随机数,if (!sharedSelectionModel) 判断时 sharedSelectionModel 为随机数并不为空,所以导致误判断 sharedSelectionModel 已经创建,导致sharedSelectionModel变量没有被正常创建。所以,下面的调用报 The inferior stopped 错误

// 创建共享选择模型。创建时需要使用 model变量,所以必须放在这里
if (!sharedSelectionModel) { // 避免重复创建
      sharedSelectionModel = new QItemSelectionModel(model, this);
}

(3)解决办法。
      清楚了报错原因,解决办法就很简单。在 MyTableView 构造函数中初始化 sharedSelectionModel 为 nullptr 即可解决。

MyTableView::MyTableView(QWidget *parent)
    : QWidget(parent),
      ...
      lastMouseEvent(nullptr),
      ...

  

 

标签:QT,tableView,C++,sharedSelectionModel,报错,MyTableView,setModel,model,inferior
From: https://www.cnblogs.com/ybmj/p/18582192

相关文章

  • 【C++】程序流程控制(下)
    4.2.3  for循环语句作用:满足循环条件,执行循环条件语法:for(起始表达式;条件表达式;末尾循环体){循环语句;} 示例://用for循环打印数字0-9代码://用for循环打印数字0-9#include<iostream>usingnamespacestd;intmain(){   //打印数字0-9   for(inti......
  • C++三级抽测题目(答案+题目)2
    今天我给大家出一套C++三级考题限时3小时,大家加油!!!题目1:求一个两位数的个位和十位的和说明从键盘读入一个两位的整数n,请求出这个两位整数个位和十位的和是多少?输入格式一个两位的整数n。输出格式一个整数,代表n个位和十位的和。样例输入数据124输出数据16......
  • Qt Design Studio入门3D项目设计
    一、QtDesignStudio3D设计的优势QtDesignStudio是一个专注于创建高性能用户界面(UI)的设计工具,它在设计3D界面方面具有一下显著优势:1、一体化工作流**1)设计与开发无缝集成:**设计师和开发者可以在同一环境中协作,无需反复转换文件格式或工具。**2)支持QtQuick和3D:*......
  • Qt/C++实现帧同步播放器/硬解码GPU绘制/超低资源占用/支持8K16K/支持win/linux/mac/嵌
    一、前言首先泼一盆冷水,在不同的电脑上实现完完全全的帧同步理论上是不可能的,市面上所有号称帧同步的播放器,同一台电脑不同拼接视频可以通过合并成一张图片来绘制实现完完全全的帧同步,不同电脑,受限于网络的延迟,命令交互的时间占用,不同硬件之间的主频偏差等,肯定会有些许的误差,只要......
  • OpenCV图像处理——图像滤波原理与代码实现(C++/Python)
    概述本节主要总结常见的图像噪声,以及降噪的方法。1.图像噪声图像噪声是指图像中不需要的、随机出现的像素值变化,这些变化可能是由于传感器误差、传输误差、环境干扰等因素引起的。图像噪声会降低图像质量,影响图像处理和分析的结果。1.1高斯噪声高斯噪声,也称为白噪声......
  • Linux C/C++编程之静态库
    【图书推荐】《LinuxC与C++一线开发实践(第2版)》_linuxc与c++一线开发实践pdf-CSDN博客《LinuxC与C++一线开发实践(第2版)(Linux技术丛书)》(朱文伟,李建英)【摘要书评试读】-京东图书(jd.com)10.3.1 静态库的基本概念静态库文件的后缀为.a,在Linux下一般命名为libxxx.a。当......
  • Linux C/C++编程之动态库
    【图书推荐】《LinuxC与C++一线开发实践(第2版)》_linuxc与c++一线开发实践pdf-CSDN博客《LinuxC与C++一线开发实践(第2版)(Linux技术丛书)》(朱文伟,李建英)【摘要书评试读】-京东图书(jd.com)10.4.1 动态库的基本概念动态库又称为共享库。这种类型的库的命名规则一般是libx......
  • 百度的面试官,你什么勾八水平,也好意思上车锁门 面试官:说一下C++强制类型转换,C++内存管
    ......
  • C++ : 四、面向对象编程(1)
    (一)面向对象的概念面向对象编程是一种编程范式,它以对象为核心来组织程序结构。对象就是在现实世界中,某个具体的实体在计算机世界中的映射和体现。在C++中,对象是类的实例,类是一种用户自定义的数据类型,它封装了数据(成员变量)和操作这些数据的函数(成员函数)。比如:银行中实体的柜......
  • C++ : 五、面向对象编程(2)
    (一)对象的生存期1.对于局部定义的对象,当程序控制流到达该对象定义处时,调用构造函数,程序控制走出该局部域时,调用析构函数。2.对于静态局部定义的对象,当程序控制流到达该对象定义处时,调用构造函数,整个程序结束时时,调用析构函数。voidfun(){ Complexc1(11,12); staticCom......