我对Qt很陌生,而且我正在尝试将网络查看器添加到应用中。
我有一个带3个窗口的应用程序和带3个按钮的导航栏。当我点击一个按钮时,它会滑动到相关的窗口。
我可以使用此按钮之一打开Web查看器,而无需退出应用程序。
该应用程序还必须与移动设备(Android,iOS,Windows Phone)兼容。
我搜索并找到了QtWebengine,但它并没有真正帮助我......
我在Qt Creator 3.4.2,Qt 5.5.0和使用Qt Designer(不知道它是否重要......)
使用C ++和QML进行编码。
感谢。
编辑:我读过Webview文档,但它仍然令人困惑...... 我看到有一个Webkit Webview和一个WbeEngine Webview。 Webkit已被弃用,因此我想使用WebEngine。 所以我尝试使用WebEngine Webview的MiniBrowser示例,它可以在我想要的平台上运行。 但我无法通过点击按钮来确定如何启动它......
我试过了:
的main.cpp
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(slot_test()));
}
void MainWindow::slot_test()
{
this->webview();
}
MainWindow::~MainWindow()
{
delete ui;
}
webview.cpp
#include <QtCore/QUrl>
#include <QQmlApplicationEngine>
#include <QtCore/QCommandLineOption>
#include <QtCore/QCommandLineParser>
#include <QGuiApplication>
#include <QStyleHints>
#include <QScreen>
#include <QtQml/QQmlContext>
#include <mainwindow.h> //
#ifdef QT_WEBVIEW_WEBENGINE_BACKEND
#include <QtWebEngine>
#endif /* QT_WEBVIEW_WEBENGINE_BACKEND */
void MainWindow::webview()
{
#ifdef Q_OS_OSX
// On OS X, correct WebView / QtQuick compositing and stacking requires running
// Qt in layer-backed mode, which again resuires rendering on the Gui thread.
qWarning("Setting QT_MAC_WANTS_LAYER=1 and QSG_RENDER_LOOP=basic");
qputenv("QT_MAC_WANTS_LAYER", "1");
qputenv("QSG_RENDER_LOOP", "basic");
#endif /* Q_OS_OSX */
#ifdef QT_WEBVIEW_WEBENGINE_BACKEND
QtWebEngine::initialize();
#endif /* QT_WEBVIEW_WEBENGINE_BACKEND */
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/base/main.qml")));
}
main.qml
import QtQuick 2.2
import QtQuick.Controls 1.1
import QtWebView 1.0
import QtQuick.Layouts 1.1
import QtQuick.Controls.Styles 1.2
ApplicationWindow {
visible: true
x: 500
y: 500
width: 500
height: 500
title: webView.title
statusBar: StatusBar {
id: statusBar
visible: webView.loading && Qt.platform.os !== "ios"
RowLayout {
anchors.fill: parent
Label { text: webView.loadProgress == 100 ? qsTr("Done") : qsTr("Loading: ") + webView.loadProgress + "%" }
}
}
WebView {
id: webView
anchors.fill: parent
url: "https://www.google.fr"
}
}
(webview.cpp是MiniBrowser示例的简化版本)
当我尝试启动它(在桌面版或Android版中)并单击按钮时,Webview将在另一个窗口中打开并立即关闭。 我不知道如何解决这个问题......
答案 0 :(得分:0)
您可以使用QtWebKit但不推荐使用:http://doc.qt.io/qt-5/qtwebkit-index.html
您可以使用QtWebEngine,但它不支持您需要的所有平台。