解决方案
CSharp运行matlab库时报错libmwlapack: load error: mkl.dll.的解决方案MWMCR:EvaluateFunction error找不到指定模块
win11离线安装donet3.5的方法
Qt6离线安装方式
QFile无法打开文件明明文件已经存在却无法打开open failed路径或者卷标不正确奇葩问题
关于启用https访问Mrdoc网站cloudflare服务支持http和https同时访问
VS编译工程提示错误error C1083: 无法打开包括文件: “stddef.h”: No such file or directory该文件指向win10 kits安装windows SDK10具体方法
关于Matlab调用Python时出现的错误解决方案Python 命令需要支持的 Cpython 版本。请参阅 <a href="matlab:helpview([docroot'/matlab/helptargets.map’]
Docker构件镜像时 Sending build context to Docker daemon远远超过原镜像大小docker build超出大小原因
QEnum的正确使用方法QMetaEnum::fromType方式总是为空isValid总是为false的解决方案和方法通过键获取值通过值获取键Q_ENUM注册失败
关于静态库的使用的注意事项动态库改静态库的不同static library
windows上Qt编译源码open source building vs2022 qt5.15.17版本编译环境问题 环境配置编译QT依赖安装
Qt5.15.17源码编译的最终版windows下使用VisualStudio编译QtWebEngine组件遇到的问题及解决方案使用VS2019进行编译启用GPU硬件加速显卡OpenGL(最终版)
Qt在MainWindows上悬浮一个QWidget窗体,窗体内有四个按钮,保持QWidget在Mainwin的正中间并设置为透明背景黑色设置无效
windows脚本bat建立目录软链接 系统找不到指定的路径
rdkafka接收数据慢的解决方案发送完了却没有接收完的问题
Qt通过QSS样式将QToolButton下拉弹出菜单的提示按钮由右边让其底部居中显示
使用Qss设置背景图片的一些问题记录不生效,效率低,背景图片不能拉伸
CMakeList管理一个工程引用另外一个工程库该注意
CMakeList设置输出bin和lib目录
CMakeList中实现编译完成后自动拷贝指定文件到指定目录copy
QT工程中文出现乱码的解决方案编译后中文显示不正确显示乱码utf-8编码编译编码
windows下编译Minio cpp客户端编译过程
Minio cpp在使用时无法连接无法下载无法上传等以及直接读取字节流的方法
QT中QHash<QStirng, QSet<SOneStruct>>报错qhash没有重载函数可以转换所有的参数类型错误
Kafka不使用docker-compose不使用zookeeper启动ApacheKafka3.8.0单机运行KRAFT模式
kafka设置服务的单个消息数据缓存大小Message_Max_Bytes服务端设置
QMenu菜单通过名称查找是否已经存在名称的菜单项存在 通过findchild<Qmenu*>(menuName);无法查询到,明明menuName的菜单已经存在,却总是返回nullptr
本文档使用 MrDoc 发布
-
+
首页
QT中QHash<QStirng, QSet<SOneStruct>>报错qhash没有重载函数可以转换所有的参数类型错误
# 说明 在QT的hash容器中,我们自定义了一个SOneStruct结构体,然而,在使用QHash<QStirng, QSet<SOneStruct>>报错“qhash没有重载函数可以转换所有的参数类型”。为了解决该问题,所以有此文章。 # 解决方案 ## 1、不使用QSet容器 由于QSet的特殊性,我们可以通过不使用QSet作为容器,在QHash中使用即可。 ## 2、使用QSet容器,但需要重载操作符==和qHash函数 ==当使用自定义结构体 SOneStruct 作为 QSet 的元素时,需要: 为 SOneStruct 实现 operator== 为 SOneStruct 实现 qHash() 函数== ```cpp struct SOneStruct { int id; QString name; double value; SOneStruct(int i = 0, const QString &n = "", double v = 0.0) : id(i), name(n), value(v) {} // 在结构体内定义比较运算符(C++20推荐) bool operator==(const SOneStruct &other) const = default; // C++20 // 或者手动实现 bool operator==(const SOneStruct &other) const { return id == other.id && name == other.name && qFuzzyCompare(value, other.value); } bool operator<(const SOneStruct &other) const { if (id != other.id) return id < other.id; if (name != other.name) return name < other.name; return value < other.value; } }; // 仍然需要全局的 qHash 函数 inline uint qHash(const SOneStruct &key, uint seed = 0) { // 使用更好的哈希组合算法 uint hash = seed; hash = hash * 31 + uint(key.id); hash = hash * 31 + qHash(key.name, 0); // 对于浮点数,需要转换或使用整型表示 hash = hash * 31 + qHash(int(key.value * 1000), 0); // 保留3位小数精度 return hash; } ``` == 上述代码中,实现operator==()和全局qHash()函数即可。== 编辑:myhappyandy
虚拟世界
2025年12月22日 22:47
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码