qt for Android添加地图

项目里有使用地图导航的要求,但是qt for Android不支持webengine,为此着实焦头烂额了一阵,感谢大佬的分享,成功在Android环境下打开地图,连接如下:https://blog.youkuaiyun.com/qq_44667165/article/details/124425313?fromshare=blogdetail&sharetype=blogdetail&sharerId=124425313&sharerefer=PC&sharesource=2301_76263212&sharefrom=from_link但是,该教程是打开app直接开启地图,由于个人需要,在此将其改为qt widgets application模板下的按键触发。

首先按照链接的教程,自行编写出程序,后面会用到。

然后新建一个项目:构建系统qmake,detail用的widget,语言无,套件选x86_64和arm64_v8a。

新建完成后,将教程项目中的android文件夹和qml文件复制到新的项目文件中。

复制:

粘贴:

在qt左栏中添加qml和html文件:

在widget.cpp中添加头文件,和按键触发函数。

#include "widget.h"
#include "ui_widget.h"

#include <QDebug>
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QQuickView>
#include <QQuickItem>
#include <QQuickWidget>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
}

Widget::~Widget()
{
    delete ui;
}

void Widget::on_mapButton_clicked()
{    
    // 创建QQuickWidget来加载QML
    QQuickWidget* quickWidget = new QQuickWidget(this);
    const QUrl url(u"qrc:/course/main.qml"_qs);
    quickWidget->setSource(url);
    if (quickWidget->status() == QQuickWidget::Error) {
        qDebug() << "QML file load failed.";
    } else {
        // 设置QQuickWidget的大小为屏幕的上9/10
        int screenHeight = QGuiApplication::primaryScreen()->geometry().height();
        int newHeight = screenHeight * 9 / 10;
        quickWidget->setGeometry(0, 0, this->width(), newHeight);
    }
}

pro文件:

1.添加模块:

QT       += core gui network widgets quick quickwidgets 

2.添加资源:

将SOURCES += \
    main.cpp \
    widget.cpp改为

SOURCES += \
    main.cpp \
    widget.cpp
    resources.files = main.qml
    resources.prefix = /$${TARGET}
RESOURCES += resources

3.添加编译环境:

contains(ANDROID_TARGET_ARCH,x86_64) {
    ANDROID_PACKAGE_SOURCE_DIR = \
        $$PWD/android
}

contains(ANDROID_TARGET_ARCH,arm64-v8a) {
    ANDROID_PACKAGE_SOURCE_DIR = \
        $$PWD/android
}

此处添加的编译环境是x86_64和arm64_v8a,如果有别的需求,亦需添加,否则将找不到html的路径,出现打不开网页的情况。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值