问题标签 [qhash]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
268 浏览

java - Qt 命令模式 QHash/QMap

我最近使用 Java 实现了一个命令设计模式:

Component任何 Java 组件 ( JButton, JMenuItem, ...)在哪里,并且CommandInterface是我的命令类的接口。

所以我的问题是:我怎样才能用 C++/Qt 做到这一点?

我已经使用过QMapand QHash,但是它们都需要一个重载的运算符(operator<operator==)作为它们的值Key

是唯一可能的派生QObject和重载方法operator<吗?

提前致谢。

0 投票
1 回答
801 浏览

c++ - 通过加入现有的 QHash 来初始化 const QHash

在我的项目中,我需要几个常量散列容器,它们是在类和函数之外定义的,因此是全局的。这样,其中一些容器应该重叠。对于列表,我将执行以下操作以将第二个const列表与第一个const列表结合起来:

但这不适用于 QHash,因为它们没有+运算符。相反,它们有unite成员函数,但我不能使用它,因为容器是const. 所以我想要的是这样的:

或者

0 投票
0 回答
129 浏览

c++ - C++继承QHash不同的键类型

我目前正在一个项目中,我有一个我想要解决的情况。我有一个基类,它有一个存储一些对象的 QHash。目前我有两个派生类。问题是,对于一个派生类,我希望键是一个字符串,而对于另一个派生类,我希望它是一个 int。无论如何,基类中的逻辑都是相同的,只是键类型不同。我知道最简单的答案是只将键设为字符串,然后在我访问它时将 int 转换为该派生类中的字符串。我试图想出一个更优雅的解决方案,但也许这只是想多了。

很多访问是通过函数发生的,但有时派生类会直接访问 QHash。但这可以改变。我考虑过覆盖派生类中的调用以接受整数,然后将其转换并调用基类版本。

我不确定是否有任何方法可以使基类 QHash 具有通用键。这些功能也都使用密钥,因此它们必须遵循相同的模式。

0 投票
0 回答
84 浏览

qt - 如何为 QNetworkCookie 实现 qHash

我正在尝试在 QSet 中收集 QNetworkCookies。我创建了 QSet QSet<QNetworkCookie> cookies ,然后使用编译器插入 cookie, cookies.insert(cookie);然后编译器告诉我,QNetworkCookie 没有 qHash,所以我添加了一个内联方法,如下面的代码清单所示。编译器现在很高兴,但是该方法永远不会被调用,并且该集合多次包含相同的 cookie。有人可以指出我正确的方向吗?

0 投票
0 回答
709 浏览

qt - VS 2017 错误 C2665 'qHash':30 个重载中没有一个可以转换所有参数类型

我将 QHash 用于一个小程序。

完成者数据.h

完成者数据.cpp

我通过编译得到这个错误 在此处输入图像描述

在这种情况下我在哪里有错误。我知道这种错误在这里发布了很多次,但是每个案例都有它自己的原因,即使对于这个简单的案例我仍然找不到原因?我使用VS 2017。

0 投票
1 回答
422 浏览

c++ - 通过带有成员函数指针的 QHash 调用成员函数的正确方法

我有一个 Server 类,它处理QJsonObject数据并根据数据中的键集进行处理。

目前,我使用一个大的 if-then-else 语句来决定像这样做什么:

等等。现在,与此同时,我有很多操作,对于每一个操作,我的服务器都必须检查所有案例,直到找到正确的案例。因此,我想知道是否有更好的方法来做到这一点。

我考虑过在不同的函数中进行数据处理,并QHash为每个操作使用相应的函数指针指向相应的函数,如下所示:

在构造函数中:

以及各自的功能:

然后调用匹配函数:

这似乎可行,但我不是 C++ 专业人士,所以我的问题是这是否是正确的方法。

0 投票
1 回答
1001 浏览

c++ - 在类中初始化 QHash

我想QHash<...>在一个类中初始化一个。没有问题,如果代码是在linux上用gcc编译的。但是如果我使用 MSVC12,我会收到以下错误:

C2661:QHash<...>::QHash:没有重载函数采用 X 参数

最小的例子:

测试类.h


测试类.cpp


主文件


无标题.pro

你们中有人知道为什么 MSVC 会抛出这个编译器错误以及如何避免这种情况吗?

0 投票
1 回答
479 浏览

c++ - 如何使用 std::string 作为 QHash 的键?

我想使用 astd::string作为 a 的键QHash

我实现了所需的 qHash:

一切都使用 MSVC 正确编译,但 gcc 生成以下错误:

错误:没有匹配的调用函数qHash(const std::__cxx11::basic_string<char>&)

我应该如何解决这个问题?

0 投票
2 回答
111 浏览

c++ - QHash 在不同的 qt 版本中表现不同

我正在 QT 版本 4.8 和 5.12.9 中编译以下代码。

由于插入顺序在不同的 qt 版本中不同,因此此代码的行为不同。

在 Qt 5.12.9 中

5.12.9

在 Qt 4.8 中

4.8

我怎么解决这个问题?为什么会这样?

我检查了 QHash 文档,但什么也想不通。 https://doc.qt.io/qt-5/qhash.html#insert

0 投票
1 回答
48 浏览

qt - 替换 qhash 值 no operator found 采用右手操作数类型

我有

.h 文件中的值

我有 (MyClass*item) 作为函数参数传递

我可以通过

如何替换具体的 index_hash 值?我不是说在迭代器中替换。随便换。我知道索引。

我尝试 index_hash[1]=item;

并得到错误 C2679:二进制

二进制“<<”:未找到采用“MyClass”类型的右手操作数的运算符