问题标签 [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.
java - Qt 命令模式 QHash/QMap
我最近使用 Java 实现了一个命令设计模式:
Component
任何 Java 组件 ( JButton
, JMenuItem
, ...)在哪里,并且CommandInterface
是我的命令类的接口。
所以我的问题是:我怎样才能用 C++/Qt 做到这一点?
我已经使用过QMap
and QHash
,但是它们都需要一个重载的运算符(operator<
或operator==
)作为它们的值Key
。
是唯一可能的派生QObject
和重载方法operator<
吗?
提前致谢。
c++ - 通过加入现有的 QHash 来初始化 const QHash
在我的项目中,我需要几个常量散列容器,它们是在类和函数之外定义的,因此是全局的。这样,其中一些容器应该重叠。对于列表,我将执行以下操作以将第二个const
列表与第一个const
列表结合起来:
但这不适用于 QHash,因为它们没有+
运算符。相反,它们有unite
成员函数,但我不能使用它,因为容器是const
. 所以我想要的是这样的:
或者
c++ - C++继承QHash不同的键类型
我目前正在一个项目中,我有一个我想要解决的情况。我有一个基类,它有一个存储一些对象的 QHash。目前我有两个派生类。问题是,对于一个派生类,我希望键是一个字符串,而对于另一个派生类,我希望它是一个 int。无论如何,基类中的逻辑都是相同的,只是键类型不同。我知道最简单的答案是只将键设为字符串,然后在我访问它时将 int 转换为该派生类中的字符串。我试图想出一个更优雅的解决方案,但也许这只是想多了。
很多访问是通过函数发生的,但有时派生类会直接访问 QHash。但这可以改变。我考虑过覆盖派生类中的调用以接受整数,然后将其转换并调用基类版本。
我不确定是否有任何方法可以使基类 QHash 具有通用键。这些功能也都使用密钥,因此它们必须遵循相同的模式。
qt - 如何为 QNetworkCookie 实现 qHash
我正在尝试在 QSet 中收集 QNetworkCookies。我创建了 QSet QSet<QNetworkCookie> cookies
,然后使用编译器插入 cookie,
cookies.insert(cookie);
然后编译器告诉我,QNetworkCookie 没有 qHash,所以我添加了一个内联方法,如下面的代码清单所示。编译器现在很高兴,但是该方法永远不会被调用,并且该集合多次包含相同的 cookie。有人可以指出我正确的方向吗?
c++ - 通过带有成员函数指针的 QHash 调用成员函数的正确方法
我有一个 Server 类,它处理QJsonObject
数据并根据数据中的键集进行处理。
目前,我使用一个大的 if-then-else 语句来决定像这样做什么:
等等。现在,与此同时,我有很多操作,对于每一个操作,我的服务器都必须检查所有案例,直到找到正确的案例。因此,我想知道是否有更好的方法来做到这一点。
我考虑过在不同的函数中进行数据处理,并QHash
为每个操作使用相应的函数指针指向相应的函数,如下所示:
在构造函数中:
以及各自的功能:
然后调用匹配函数:
这似乎可行,但我不是 C++ 专业人士,所以我的问题是这是否是正确的方法。
c++ - 在类中初始化 QHash
我想QHash<...>
在一个类中初始化一个。没有问题,如果代码是在linux上用gcc编译的。但是如果我使用 MSVC12,我会收到以下错误:
C2661:QHash<...>::QHash:没有重载函数采用 X 参数
最小的例子:
测试类.h
测试类.cpp
主文件
无标题.pro
你们中有人知道为什么 MSVC 会抛出这个编译器错误以及如何避免这种情况吗?
c++ - 如何使用 std::string 作为 QHash 的键?
我想使用 astd::string
作为 a 的键QHash
:
我实现了所需的 qHash:
一切都使用 MSVC 正确编译,但 gcc 生成以下错误:
错误:没有匹配的调用函数
qHash(const std::__cxx11::basic_string<char>&)
我应该如何解决这个问题?
c++ - QHash 在不同的 qt 版本中表现不同
我正在 QT 版本 4.8 和 5.12.9 中编译以下代码。
由于插入顺序在不同的 qt 版本中不同,因此此代码的行为不同。
在 Qt 5.12.9 中
在 Qt 4.8 中
我怎么解决这个问题?为什么会这样?
我检查了 QHash 文档,但什么也想不通。 https://doc.qt.io/qt-5/qhash.html#insert
qt - 替换 qhash 值 no operator found 采用右手操作数类型
我有
.h 文件中的值
我有 (MyClass*item) 作为函数参数传递
我可以通过
如何替换具体的 index_hash 值?我不是说在迭代器中替换。随便换。我知道索引。
我尝试 index_hash[1]=item;
并得到错误 C2679:二进制
二进制“<<”:未找到采用“MyClass”类型的右手操作数的运算符