首页 > 解决方案 > 如何为 QNetworkCookie 实现 qHash

问题描述

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

#ifndef BROWSER_H
#define BROWSER_H

#include <QDebug>
#include <QMainWindow>
#include <QNetworkCookie>
#include <QObject>
#include <QWebEngineView>


class Browser : public QMainWindow
{
    Q_OBJECT
private:
    QWebEngineView *webEngine;
    QSet<QNetworkCookie> cookies;

public:
    explicit Browser(const QUrl &url);

protected slots:
    void finishLoading(bool);
    void handleCookieAdded(const QNetworkCookie &cookie);
};

inline uint qHash(const QNetworkCookie &key, uint seed)
{
    uint hash = qHash(key.domain(), seed) ^ qHash(key.name(), seed);
    qDebug() << "qHash " << key.domain() << " " << key.name() << " " << hash;
    return hash;
}

#endif // BROWSER_H

标签: qtqt5qhash

解决方案


推荐阅读