如何重置QML WebView?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何重置QML WebView?相关的知识,希望对你有一定的参考价值。
看起来。这是最简单的代码:https://www.dropbox.com/s/ctdcgrk0eqgq3a3/webview_test.tar.gz
当您启动此应用程序时,您将看到白色窗口。单击窗口,您将看到带有Twitter的浏览器。再次单击,浏览器将被隐藏和销毁。
因此,请登录Twitter,而不是通过单击第一个窗口来破坏浏览器,然后通过单击第一个窗口再次创建它。您将看到您已登录。但是我每次打开时都需要该浏览器而没有签名用户(即使用户选中了“记住我”复选框)。这该怎么做?如何将浏览器重置为初始状态?
这是项目的主要部分:
main.cpp中
#include <QApplication>
#include <QQuickView>
#include "container.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Container c;
c.start();
return a.exec();
}
container.cpp
#include "container.h"
#include <QDebug>
#include <QQuickItem>
#include <QQmlContext>
Container::Container(QObject *parent) :
QObject(parent)
{
mainFile = new QQuickView();
browserExists = false;
}
Container::~Container()
{
delete mainFile;
}
void Container::start()
{
mainFile->setSource(QUrl("qrc:/main.qml"));
connect(mainFile->rootObject(), SIGNAL(click()), this, SLOT(mainFileClicked()));
mainFile->show();
}
void Container::mainFileClicked()
{
if(!browserExists)
{
browser = new QQuickView();
browser->setSource(QUrl("qrc:/browser.qml"));
browser->rootContext()->setContextProperty("address", "http://twitter.com");
browser->show();
browserExists = true;
}
else
{
browser->hide();
delete browser;
browserExists = false;
}
}
main.qml
import QtQuick 2.0
Rectangle {
width: 320
height: 240
signal click();
MouseArea {
anchors.fill: parent
onClicked:
{
click()
}
}
}
browser.qml
import QtQuick 2.0
import QtWebKit 3.0
import QtWebKit.experimental 1.0
Item {
width: 640
height: 480
signal closeWindow();
WebView
{
anchors.fill: parent
url: address
experimental.preferences.privateBrowsingEnabled: true
}
}
答案
我认为,现在没有必要回答这个问题,但我在Sailfish应用程序中嵌入了QML WebView存在同样的问题。私密浏览仍然无效,所以我发现了脏黑客:从fs中删除缓存。在旗鱼中,它存储在〜/ .local / share / app-name / .QtWebKit中。因此,这种肮脏的解决方案使我有可能每次使用一个具有新鲜状态的webview。
以上是关于如何重置QML WebView?的主要内容,如果未能解决你的问题,请参考以下文章