【Qt】delegate的自定义实现函数createEditor进不去【2023.05.07】

news2024/10/5 15:22:36

摘要

妈卖批,因为这个函数进不去,emo了一下午。实际上就是因为函数声明和定义的地方漏了个const关键字。

1.正确✔:

QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const Q_DECL_OVERRIDE;

2.错误❌:

QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) Q_DECL_OVERRID

注意那个const关键字。

const关键字加载函数名后面的作用

在C++中,const关键字用于声明常量或指定对象不可修改。
当const放在函数名后面时,表示该函数不可以修改对象的状态。它的主要作用有:

  1. 增强代码的健壮性。const函数不能修改对象状态,所以调用该函数不会改变对象的属性值,更不会导致崩溃或意外行为。
  2. 可重载。通过const和非const两种函数重载,我们可以实现基于对象状态是否改变来调用不同函数的行为。
  3. 减少构造与析构。const对象在被调用后,其状态不会改变,所以不会触发相关成员的构造与析构。这可以提高性能。
    例如:
class Person {
public:
    void eat() { ... }   // 可以修改状态
    void eat() const { ... }  // 不可以修改状态
    
    void run() { ... }   // 可以修改状态
    void run() const {  ... } // 不可以修改状态
};

int main() {
    Person p;
    p.eat();   // 调用非const,可以修改状态
    p.run();   // 调用非const,可以修改状态
    
    const Person p2;
    p2.eat();   // 调用const,不可以修改状态
    p2.run();   // 调用const,不可以修改状态
}

这里,通过在函数名后加const,我们重载了eat和run两个函数。
对于非const对象,调用非const函数;
对于const对象,调用const函数。
因此,const关键字加在函数后,表明该函数不允许修改对象的状态。它带来的主要好处是:

  1. 增强代码健壮性
  2. 可重载
  3. 提高性能(避免多余构造与析构)

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/610722.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DCASE挑战赛中的声音事件检测与定位(SELD)子任务介绍

DCASE(Detection and Classification of Acoustic Scenes and Events)系列挑战赛包含多个与声音计算相关的子任务,以DCASE2023为例,其包含如下七个与声音计算相关的任务。 (source:DCASE challenge website) 声音事件…

ChatGPT配合两款神器,1分钟生成流程图

流程图,工作上再正常不过的一种图形,常见制图方法对比: 传统手动制图:耗时耗力,迁移性差AI 辅助制图:使用自然语言提出需求,零基础快速制图 几款常见的我在用的在线绘图工具推荐: Pr…

火山引擎DataLeap的Catalog系统搜索实践(三):Learning to rank与后续工作

Learning to rank Learning to rank主要分为数据收集,离线训练和在线预测三个部分。搜索系统是一个Data-driven system,因此火山引擎DataLeap的Catalog系统设计之初就需要考虑数据收集。收集的数据可以用来评估和提升搜索的效果。数据收集和在线预测前面…

基于国民技术N32G435的FLASH读写测试

一、测试工具: 1.国民技术N32G43XCL-STB开发板----主控为N32G435CB 2.创芯工坊PW200加密离线烧录器 3.PowerWriter上位机,配合PW200查看FLASH数据。 4.keil5 二、测试背景 现在很多的应用中都需要保存离线数据,例如一些传感器的校正数…

基于C#制作一个鼠标连点器

秒杀抢券、压枪换弹都是网上冲浪的基本操作,制作一个鼠标连点器,从此在互联网所向披靡。 一、项目搭建1.1、创建1.2、界面设计 二、功能实现2.1、类型库调用2.2、窗口句柄定义2.3、线程处理2.4、快捷键 一、项目搭建 1.1、创建 打开Visual Studio,右侧选择创建新项…

ARM体系结构和RAM的工程搭建、程序编写

目录 工程搭建 程序编写 带标志位的加法ADC ADCS 跳转指令B\BL 栈的应用->叶子函数的调用过程 栈的应用->非叶子函数的调用过程 异常中断产生指令 协处理器指令 伪操作 安装交叉编译工具 Makefile 宏定义 预编译指令 申请一个字的空间 .word 申请多个字节空间 嵌套编程 方…

如何查询期刊的SCI分区

好消息是CSDN AI写作助手上线了 我不用自己一个字一个字去写SCI分区是啥(x) 然而—— 麻了还是自己写吧, 在人工智能这条路上,CSDN还是需要努力。 简单来说,我们做科研、发文章,肯定是需要比较的 谁的…

记录一次Mysql死锁事件(由Insert与uniqueKey导致)

| 导语记录一次于2023年01月23日遇到的死锁问题。 1、基础 1.1 数据库隔离级别 1.1.1RC READ COMMITTED:只能读取已经提交的数据;此时:允许幻读和不可重复读,但不允许脏读,所以RC隔离级别要求解决脏读; 1.1…

Mac下通过Docker安装ElasticSearch集群

1、安装ElasticSearch 使用docker直接获取es镜像,执行命令docker pull elasticsearch:7.7.0 执行完成后,执行docker images即可看到上一步拉取的镜像。 2、创建数据挂在目录,以及配置ElasticSearch集群配置文件 创建数据文件挂载目录 mkdir -…

如何快速掌握Facebook运营+独立站运营基础?

在当今数字化时代,Facebook运营和独立站运营成为许多企业和个人创业者的关键战略。通过巧妙地结合这两个渠道,你可以有效地推广品牌、吸引目标受众并实现商业目标。本文将为你介绍如何快速掌握Facebook运营和独立站运营的基础知识,为你的业务…

微服务组件之Eureka

1、什么是Eureka,为什么要有Eureka 在传统的RPC远程调用中,管理每个服务于服务之间依赖关系复杂,管理复杂,所以需要使用服务治理,管理服务于服务之间依赖关系,可以实现服务调用、负载均衡、容错等&#xf…

一文搞懂KMP算法!!!

一文搞懂KMP算法!!! 🍁什么是KMP算法?🍁什么是 next() 数组 和 前缀表?前缀表有什么作用呢最长公共前后缀如何计算前缀表 🚀 构造next数组🚀 使用next数组来做匹配 🍁什么是KMP算法…

基于SSM+Vue的旅游资源网站设计与实现

博主介绍: 大家好,我是一名在Java圈混迹十余年的程序员,精通Java编程语言,同时也熟练掌握微信小程序、Python和Android等技术,能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架下…

我们不打价格战!大众的倔强

2023年即将过半,在价格战席卷市场的同时,汽车制造商必须在市场份额、销量、营收以及利润之间做出权衡。“无论如何,大众都不会参与中国市场的价格战。“本周,大众汽车首席运营官Ralf Brandstaetter表示。 这家曾经在中国市场长期占…

留学生ChatGPT的正确打开方式及推荐使用方式

ChatGPT是什么? ChatGPT可以代写论文吗? ChatGPT推荐打开方式是什么? 今天就为大家梳理一下火爆全网的ChatGPT在留学中的正确打开方式,让同学可以更好地体验ChatGPT带来的便利。 什么是Chat GPT? ChatGPT(Chat G…

Office Visio 2016安装

哈喽,大家好。今天一起学习的是Visio 2016的安装,这是一个绘制流程图的软件,用有效的绘图表达信息,比任何文字都更加形象和直观。Office Visio 是office软件系列中负责绘制流程图和示意图的软件,便于IT和商务人员就复杂…

微信电脑版二维码( NATIVE 扫码支付)

后端代码 /** * 微信支付->扫码支付(模式二)->统一下单->微信二维码 * return */ PostMapping (value “/qrcode”) RequestLog(“微信支付二维码”) ApiOperation(“微信支付二维码”) AnonAccess public ResponseEntity wxpayPay(Validated RequestBody SysMember…

GreatSQL 8.0.32-24 今日发布

1.新增特性 1.1 SQL兼容性1.2 MGR1.3 性能优化1.4 安全 2.稳定性提升 3.其他调整 4.bug修复 5.GreatSQL VS MySQL 6.GreatSQL Release Notes GreatSQL 8.0.32-24版本发布,增加并行load data、(逻辑 & CLONE)备份加密、MGR读写节点可绑定…

MyBatis的创建和单表使用

前言: 之前我们了解到MySQL。接下来了解一下MyBatis,它不是一种数据库,那是什么呢和数据库有什么联系了? 目录 一:MyBatis的定义 二:MyBatis的创建 三:MyBatis的简单使用 3.1:准备工作 3.…

后端服务架构高性能设计之道

“N 高 N 可”,高性能、高并发、高可用、高可靠、可扩展、可维护、可用性等是后台开发耳熟能详的词了,它们中有些词在大部分情况下表达相近意思。本序列文章旨在探讨和总结后台架构设计中常用的技术和方法,并归纳成一套方法论。 前言 本文主…