Qt andoid 实现简单的浏览器
文章目录Qt android打开web网页Qt android网页代码测试网页参考实例推荐一个零声学院免费公开课程,个人觉得老师讲得不错,分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习Qt android打开web网页Qt android网
·
推荐一个零声学院免费公开课程,个人觉得老师讲得不错,分享给大家: Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习
Qt android打开web网页
用Qt在安卓中开发,用到了web网页,这里面,但是安卓没有QWebEngine,等一些库(Qt版本:Qt5.15.2),但是有QtWebView,但是这个只能在qml中使用。所以需要qml和c++混合开发
Qt 安卓环境搭建问题可以参考请移步 《Qt android 开发环境搭建》
Qt c++和qml混合开发
Qt C++和qml混合开发,主要用到了C++和qml之前的通信,之间的数据传递。
Qt android网页代码
测试网页
在安卓下,可以打开网页,进行跳转。
测试代码
主要在安卓下实现一个简易的浏览器功能
实例代码
main.qml
import QtQuick 2.15
import QtQuick 2.2
import QtQuick.Controls 1.1
import QtWebView 1.1
import QtQuick.Layouts 1.1
import QtQuick.Controls.Styles 1.2
Item {
visible: true
// title: qsTr("Hello World")
Rectangle {
Text {
text: webView.url
}
}
Connections {
target: widget
onSigGo: {
console.log("url: " + url);
webView.url = url
widget.setText(webView.url)
}
onSigReflash: {
webView.reload()
widget.setText(webView.url)
console.log("url: " + webView.url)
}
onSigForward: {
webView.goForward()
widget.setText(webView.url)
console.log("url: " + webView.url)
}
onSigBack: {
webView.goBack()
widget.setText(webView.url)
console.log("url: " + webView.url)
}
}
WebView {
id: webView
anchors.fill: parent
onLoadingChanged: {
widget.setText(webView.url)
console.log("url changed: " + webView.url)
if (loadRequest.errorString)
console.error(loadRequest.errorString)
}
}
}
widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include <QtQml/QQmlContext>
#include <QtQuick/QQuickView>
#include <QVBoxLayout>
#include <QTimer>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
m_pWebView = new QQuickWidget(QUrl("qrc:/main.qml"));
m_pWebView->setResizeMode(QQuickWidget::SizeRootObjectToView);
m_pWebView->rootContext()->setContextProperty("widget", this);
QVBoxLayout *layout = new QVBoxLayout(ui->wgtWeb);
layout->addWidget(m_pWebView);
QTimer::singleShot(2000, this, [this](){
emit sigGo(QUrl::fromUserInput(ui->lineEdit->text()));
});
}
Widget::~Widget()
{
delete ui;
}
void Widget::setText(QString url)
{
ui->lineEdit->setText(url);
}
void Widget::on_btnBack_clicked()
{
emit sigBack();
}
void Widget::on_btnRefresh_clicked()
{
emit sigReflash();
}
void Widget::on_btnForward_clicked()
{
emit sigForward();
}
void Widget::on_btnGo_clicked()
{
emit sigGo(QUrl::fromUserInput(ui->lineEdit->text()));
}
main.cpp
#include <QApplication>
#include <QQmlApplicationEngine>
#include <QQuickWidget>
#include <QtQuick/QQuickView>
#include <QtQml/QQmlContext>
#include <QtWebView>
#include <QHBoxLayout>
#include "Widget.h"
int main(int argc, char *argv[])
{
QtWebView::initialize();
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
#endif
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}
实例运行结果
可以前进,后退,刷新,和转到功能
代码下载地址:
链接: https://pan.baidu.com/s/1YcG52wZweMKGwKQVzqHzLQ 提取码: hwfk
参考博客
更多推荐
已为社区贡献7条内容
所有评论(0)