Qt笔记-Qt获取百度下拉推荐词

mac2022-06-30  26

目录

 

基本概念

代码与实例


 

基本概念

这里就是百度搜索的这个功能

在Web应用中,这种主要是通过jsonp原理实现的,但在桌面应用程序就更简单了,只要发送get请求,不填写回调函数,即可在http封包中获取数据。如下:

在桌面应用程序这个请求更为简单,因为只需要发送http请求,无需http安全,以及某些浏览器自己的安全协定。

 

 

代码与实例

运行截图如下如搜索

再来一个:

源码如下:

widget.h

#ifndef WIDGET_H #define WIDGET_H #include <QWidget> QT_USE_NAMESPACE class QNetworkAccessManager; QT_END_NAMESPACE namespace Ui { class Widget; } class Widget : public QWidget { Q_OBJECT public: explicit Widget(QWidget *parent = nullptr); ~Widget(); protected slots: void inputChanged(const QString &text); protected: void resetListWidget(QStringList list); private: Ui::Widget *ui; QNetworkAccessManager *m_manager; }; #endif // WIDGET_H

widget.cpp

#include "widget.h" #include "ui_widget.h" #include <QNetworkAccessManager> #include <QJsonDocument> #include <QMap> #include <QVariant> #include <QDebug> #include <QEventLoop> #include <QNetworkReply> #include <QNetworkRequest> Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); this->setWindowTitle(" IT1995"); m_manager = new QNetworkAccessManager(this); connect(ui->lineEdit, SIGNAL(textChanged(const QString&)), this, SLOT(inputChanged(const QString&))); } Widget::~Widget() { delete ui; } void Widget::inputChanged(const QString &text) { QNetworkRequest request; request.setUrl("https://www.baidu.com/sugrec?pre=1&p=3&ie=utf-8&json=1&prod=pc&from=pc_web&sugsid=1430,21123,29523,29721,29567,29220&req=2&csor=5&pwd=123&wd=" + text); QNetworkReply *reply = m_manager->get(request); QEventLoop loop; connect(reply, SIGNAL(finished()), &loop, SLOT(quit())); loop.exec(); QMap<QString, QVariant> map = QJsonDocument().fromJson(reply->readAll()).toVariant().toMap(); //map = map.value("g").toMap(); QList<QVariant> list = map.value("g").toList(); QStringList widgetList; for(int i = 0; i < list.size(); i++){ widgetList << list[i].toMap().value("q").toString(); } resetListWidget(widgetList); } void Widget::resetListWidget(QStringList list) { ui->listWidget->clear(); ui->listWidget->addItems(list); }

程序打包下载地址:

https://github.com/fengfanchen/Qt/tree/master/QtWebSearchKey

最新回复(0)