我是个彻头彻尾的傻瓜。我正在尝试设置一个Redis连接,并能够使用c方法将密钥设置到Redis中。c代码很长,所以我只包括相关部分:网页。H
#ifndef WEBPAGE_H #define WEBPAGE_H #include #include #include #include #include "cookiejar.h" #include "redispp.h" class Config; class CustomPage; class WebpageCallbacks; class NetworkAccessManager; class QWebInspector; class WebPage : public QObject, public QWebFrame::PrintCallback { Q_OBJECT Q_PROPERTY(QString title READ title) Q_PROPERTY(QString frameTitle READ frameTitle) Q_PROPERTY(QString content READ content WRITE setContent) Q_PROPERTY(QString frameContent READ frameContent WRITE setFrameContent) Q_PROPERTY(QString url READ url) Q_PROPERTY(QString frameUrl READ frameUrl) Q_PROPERTY(bool loading READ loading) Q_PROPERTY(int loadingProgress READ loadingProgress) Q_PROPERTY(bool canGoBack READ canGoBack) Q_PROPERTY(bool canGoForward READ canGoForward) Q_PROPERTY(QString plainText READ plainText) Q_PROPERTY(QString framePlainText READ framePlainText) Q_PROPERTY(QString libraryPath READ libraryPath WRITE setLibraryPath) Q_PROPERTY(QString offlineStoragePath READ offlineStoragePath) Q_PROPERTY(int offlineStorageQuota READ offlineStorageQuota) Q_PROPERTY(QVariantMap viewportSize READ viewportSize WRITE setViewportSize) Q_PROPERTY(QVariantMap paperSize READ paperSize WRITE setPaperSize) Q_PROPERTY(QVariantMap clipRect READ clipRect WRITE setClipRect) Q_PROPERTY(QVariantMap scrollPosition READ scrollPosition WRITE setScrollPosition) Q_PROPERTY(bool navigationLocked READ navigationLocked WRITE setNavigationLocked) Q_PROPERTY(QVariantMap customHeaders READ customHeaders WRITE setCustomHeaders) Q_PROPERTY(qreal zoomFactor READ zoomFactor WRITE setZoomFactor) Q_PROPERTY(QVariantList cookies READ cookies WRITE setCookies) Q_PROPERTY(QString windowName READ windowName) Q_PROPERTY(QObjectList pages READ pages) Q_PROPERTY(QStringList pagesWindowName READ pagesWindowName) Q_PROPERTY(bool ownsPages READ ownsPages WRITE setOwnsPages) Q_PROPERTY(QStringList framesName READ framesName) Q_PROPERTY(QString frameName READ frameName) Q_PROPERTY(int framesCount READ framesCount) Q_PROPERTY(QString focusedFrameName READ focusedFrameName) Q_PROPERTY(QObject* cookieJar READ cookieJar WRITE setCookieJarFromQObject) Q_PROPERTY(QStringList captureContent READ captureContent WRITE setCaptureContent) public: WebPage(QObject* parent, const QUrl& baseUrl = QUrl()); virtual ~WebPage(); QWebFrame* mainFrame(); QString content() const; QString frameContent() const; void setContent(const QString& content); void setFrameContent(const QString& content); QString title() const; QString frameTitle() const; QString url() const; QString frameUrl() const; bool loading() const; int loadingProgress() const; QString plainText() const; QString framePlainText() const; QString libraryPath() const; void setLibraryPath(const QString& dirPath); QString offlineStoragePath() const; int offlineStorageQuota() const; void setViewportSize(const QVariantMap& size); QVariantMap viewportSize() const; void setClipRect(const QVariantMap& size); QVariantMap clipRect() const; void setScrollPosition(const QVariantMap& size); QVariantMap scrollPosition() const; void setPaperSize(const QVariantMap& size); QVariantMap paperSize() const; void setNavigationLocked(bool lock); bool navigationLocked(); void setCustomHeaders(const QVariantMap& headers); QVariantMap customHeaders() const; }
网页。cpp
# include "webpage.h" # include "networkaccessmanager.h" # include "utils.h" # include "config.h" # include "consts.h" # include "callback.h" # include "cookiejar.h" # include "system.h" # include "redispp.h" # ifdef Q_OS_WIN32 # define STDOUT_FILENAME "/dev/stdout" # define STDERR_FILENAME "/dev/stderr" /** * @class CustomPage */ class CustomPage: public QWebPage { Q_OBJECT void WebPage::connectRedis() { this->redis = redispp::Connection conn("127.0.0.1", "6379", "password", false); } void WebPage::redisSet(const QString& key,const QString& value) { this->redis.set(key, value); } int WebPage::offlineStorageQuota() const { return m_customWebPage->settings()->offlineStorageDefaultQuota(); } void WebPage::showInspector(const int port) { m_customWebPage->settings()->setAttribute(QWebSettings::DeveloperExtrasEnabled, true); m_inspector = new QWebInspector; m_inspector->setPage(m_customWebPage); if (port == -1) { m_inspector->setVisible(true); } else { m_customWebPage->setProperty("_q_webInspectorServerPort", port); } } void WebPage::applySettings(const QVariantMap& def) { QWebSettings* opt = m_customWebPage->settings(); opt->setAttribute(QWebSettings::AutoLoadImages, def[PAGE_SETTINGS_LOAD_IMAGES].toBool()); opt->setAttribute(QWebSettings::JavascriptEnabled, def[PAGE_SETTINGS_JS_ENABLED].toBool()); opt->setAttribute(QWebSettings::XSSAuditingEnabled, def[PAGE_SETTINGS_XSS_AUDITING].toBool()); opt->setAttribute(QWebSettings::LocalContentCanAccessRemoteUrls, def[PAGE_SETTINGS_LOCAL_ACCESS_REMOTE].toBool()); opt->setAttribute(QWebSettings::WebSecurityEnabled, def[PAGE_SETTINGS_WEB_SECURITY_ENABLED].toBool()); opt->setAttribute(QWebSettings::JavascriptCanOpenWindows, def[PAGE_SETTINGS_JS_CAN_OPEN_WINDOWS].toBool()); opt->setAttribute(QWebSettings::JavascriptCanCloseWindows, def[PAGE_SETTINGS_JS_CAN_CLOSE_WINDOWS].toBool()); if (def.contains(PAGE_SETTINGS_USER_AGENT)) { m_customWebPage->m_userAgent = def[PAGE_SETTINGS_USER_AGENT].toString(); } if (def.contains(PAGE_SETTINGS_USERNAME)) { m_networkAccessManager->setUserName(def[PAGE_SETTINGS_USERNAME].toString()); } if (def.contains(PAGE_SETTINGS_PASSWORD)) { m_networkAccessManager->setPassword(def[PAGE_SETTINGS_PASSWORD].toString()); } if (def.contains(PAGE_SETTINGS_MAX_AUTH_ATTEMPTS)) { m_networkAccessManager->setMaxAuthAttempts(def[PAGE_SETTINGS_MAX_AUTH_ATTEMPTS].toInt()); } if (def.contains(PAGE_SETTINGS_RESOURCE_TIMEOUT)) { m_networkAccessManager->setResourceTimeout(def[PAGE_SETTINGS_RESOURCE_TIMEOUT].toInt()); } } QString WebPage::userAgent() const { return m_customWebPage->m_userAgent; } void WebPage::setNavigationLocked(bool lock) { m_navigationLocked = lock; } bool WebPage::navigationLocked() { return m_navigationLocked; } void WebPage::setViewportSize(const QVariantMap& size) { int w = size.value("width").toInt(); int h = size.value("height").toInt(); if (w > 0 && h > 0) { m_customWebPage->setViewportSize(QSize(w, h)); } } QVariantMap WebPage::viewportSize() const { QVariantMap result; QSize size = m_customWebPage->viewportSize(); result["width"] = size.width(); result["height"] = size.height(); return result; } }
编译错误
webpage.cpp:950:11: error: no member named 'redis' in 'WebPage' this->redis = redispp::Connection conn("127.0.0.1", "6379", "password", false); ~~~~ ^ webpage.cpp:950:39: error: expected '(' for function-style cast or type construction this->redis = redispp::Connection conn("127.0.0.1", "6379", "password", false); ~~~~~~~~~~~~~~~~~~~ ^ webpage.cpp:955:7: error: no member named 'redis' in 'WebPage' this->redis.set(key, value); ~~~~ ^
我使用的c Redis库是https://github.com/brianwatling/redispp
注意***我尝试使用Redisp命名空间,比如在这个例子中,但是连接类会与其他类冲突。https://github.com/brianwatling/redispp/blob/master/test/multi.cpp*
整个网页。cpp文件在粘贴箱中。该文件超出了StackOverflow字符限制http://pastebin.com/fUhRwy0R
任何帮助都将不胜感激。
您的类被称为CustomPage
,但出于某种原因,您正在网页
中实现函数。
将函数定义更改为:
void connectRedis()
和
void redisSet(const QString & key, const QString & value)
此外,由于您可能来自Java或C#,在C中执行操作的标准方法是将类定义与实现分离(放入.h/.hpp和.cpp文件),请参阅此处以了解更多信息。
问题内容: 我可以在Redis中设置全局TTL吗?每次设置密钥时,都无需设置TTL。 我用谷歌搜索,但找不到任何线索。看来似乎无法完成? 谢谢。 问题答案: 不,Redis没有全局/默认TTL的概念,是的,您必须为每个键分别设置它。但是,根据您的要求和要执行的操作,可能还有其他方法可以实现您的目标。换句话说,您为什么需要它? 例如,如果您想将Redis用作缓存,而不必担心必须删除“旧”项目,则只需
问题内容: 我试图在mysql中设置sql_mode,但会引发错误。 命令: 这不是设置多种模式的正确方法吗?设置会话和全局模式的优点是什么?哪有?我有不同的用户尝试使用不同的UNC值更新数据库,并插入od将会话模式设置为“ NO_BACKSLASH_ESCAPES”,尽管为此我可以使用一种通用的模式。这有意义吗? 请告诉我。 谢谢。 问题答案: 我解决了 正确的模式是:
我有以下消息: 在typescript中,我试图根据一个类似于下面的typescript映射来设置protobuf消息的映射条目。 我尝试遍历地图对象中的条目并以这种方式设置地图条目。 我得到一个错误:“TypeError:b.toArray不是一个函数。”你知道我如何对每个typescript映射条目进行强制转换/序列化/打包,以便在protobuf中进行设置吗?我在几个地方找过运气不佳的例子。
编辑找到的#2个解决方案;见下文。 我正在使用VirtualEnv在Flask中编写一个小应用程序。这已经不是我第一次这么做了,但是这次和过去两次我都试过了,我遇到了同样的问题。当我并尝试安装一个包--,例如,它一直在全局安装,而不是在VirtualEnv中。奇怪的是,它只有在我停用之后才会发生,而且这种情况在那一刻是不一致的。 也就是说,如果我一次全部安装,我似乎能够安装我需要的所有东西,甚至偶
目标服务器正在使用自签名证书。是否有方法禁用认证检查?在另一个web服务器实例中,我们使用 在使用詹金斯时,是否可以有类似的选择?
问题内容: 我正在尝试创建一个分页类,并使用该类外部的变量。 但这给了我致命错误“在非对象上调用成员函数query()”。 这是索引文件: 这是pagi.php文件: 是否可以在类内部使用该变量,而无需在类内部创建新变量? 问题答案: 解决此问题的正确方法是将数据库对象注入另一个类(依赖项注入): 解决该问题的另一种方法是将数据库类的实例注入使用它的方法中: 您选择哪种方法取决于情况。如果只有一个