最近捣鼓qt很久了,app是我一直向往的放心,当然,开发app大都用java,flutter或者koltin,很少用c++实现,但我个人比较执着哈,追求高性能,底层方面开发,话不多说,首先配置qt开发app的环境罗,需要安装java,android-sdk,qt-for-android,ndk,具体详细步骤推荐看良风抚旧
的博客,该播主直接给了相关环境,直接按照他的步骤安装即可,我是根据他的博客配置的,注意下后面进行选择路径时,也就是打开qt后,工具-->选项->Android,中NDK路径最好不要带空格或者中文,不然会报错,如下所示其他方面配置好了后,接下来可以配置android虚拟机,建议这步直接跳过,本人亲自配置了android虚拟机,运行真的超慢,每次运行都要等3-4分钟,开发效率严重拉低,这里最好使用手机连接电脑进行开发,比虚拟机块多了,除此之外,安卓虚拟机运行时在ui文件里面的部件带中文直接会乱码,直接乱码,无论你怎么设置编码都解决不了,真机不会有这样的问题。从过来人的角度建议真机,手机如何连接呢,将你的手机数据线连接电脑,同时手机在设置里面选中开发者模式和调试模式即可,然后运行代码时,会自动检测到真机,你勾选即可运行,十分方便,接下来我开始弄我的爬虫代码了,功能很简单,首先账号密码登录界面,然后登录成功后到另一个数据采集界面,输入要采集的连接,然后请求这个连接,点击开始采集后,将响应后的数据显示在界面上。这是我的登录的ui界面,如下所示,接下来是另一个爬虫ui,如下所示我的整个项目的代码目录如下所示
然后主要部分代码widget.cpp代码如下所示
#include "widget.h"
#include "ui_widget.h"
#include "ui_mainwindow.h"
#include<mainwindow.h>
#include<QPushButton>
#include<QDebug>
#include<QMessageBox>
#include<QNetworkAccessManager>
#include<QNetworkReply>
#include<QTextCodec>
#include <QJsonDocument>
#include <QJsonObject>
#include <QCoreApplication>
#include<QNetworkRequest>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
connect(ui->pushButton,&QPushButton::clicked,[=](){
QString account = ui->lineEdit->text();
QString password = ui->lineEdit_2->text();
if(account=="test"&&password=="lyp1016")
{
//弹出登录成功的消息提示框
QMessageBox::StandardButton result = QMessageBox::information(this,"登录提示","登录成功",QMessageBox::Ok|QMessageBox::Cancel,QMessageBox::Ok);
//创建爬虫界面
MainWindow *mw = new MainWindow;
this->hide();
mw->show();
connect(mw->ui->pushButton,&QPushButton::clicked,mw,[=](){
QString links= mw->ui->lineEdit->text();
QNetworkAccessManager *manager = new QNetworkAccessManager(this);
qDebug()<<links;
QUrl url(links);
QNetworkRequest request(url);
// request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
request.setSslConfiguration(QSslConfiguration::defaultConfiguration());
request.setAttribute(QNetworkRequest::FollowRedirectsAttribute, true);
QNetworkReply *reply = manager->get(request);
connect(reply, &QNetworkReply::finished, [=]() {
if (reply->error() == QNetworkReply::NoError) {
// 以二进制形式读取响应数据
QString data = reply->readAll();
// QJsonDocument responseDocument = QJsonDocument::fromJson(data);
// QJsonObject responseObject = responseDocument.object();
qDebug()<<"999999999999999999";
mw->ui->textEdit->setPlainText(data);
qDebug()<<result;
} else {
qDebug() << reply->errorString();
}
});
});
}
else {
int result = QMessageBox::warning(this,"登录提示","账号密码错误",tr("确定"),tr("取消"),"");
qDebug()<<result;
}
});
}
Widget::~Widget()
{
delete ui;
}
这里注意的是,我们输入的链接为https时需要配置openssl环境,否则打包成apk在手机运行时无法进行请求,配置很容易,没有网上说的那么复杂,可以看大佬的博客:喵喵叫的猴 中详细将了相关的配置方法,文件下载压缩后如下所示
接下来就可以直接在手机上运行程序了,如下所示,输入账号密码后,我们到达爬虫界面,输入要采集的网址后,点击运行,结果如下所示完美运行,接下来我将继续开发app,加油
点击此处登录后即可评论