我尝试使用QML WebView打开本地页面(WebOS应用程序)
import QtQuick 1.1
import QtWebKit 1.0
import com.nokia.meego 1.0
Page
{
id: mainPage
Flickable
{
id: appFlickable
anchors.fill: parent
clip: true
contentHeight: appView.height
contentWidth: appView.width
WebView
{
id: appView
preferredHeight: parent.height
preferredWidth: parent.width
url: appUrl
settings.javascriptCanOpenWindows: true
settings.javascriptEnabled: true
settings.autoLoadImages: true
settings.javascriptCanAccessClipboard: true
settings.developerExtrasEnabled: true
onLoadFailed: console.log("load failed")
onLoadFinished: console.log("load finished")
}
}
}
我用main.cpp加载它:
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QDeclarativeView view;
view.rootContext()->setContextProperty("appUrl", argv[1]);
view.setSource(QUrl("qrc:/qml/main.qml"));
view.showFullScreen();
return app.exec();
}
我总是遇到负载失败。有什么方法可以找出问题,启用一些Web控制台向我显示失败的原因。
由于
的Marcin
答案 0 :(得分:1)
最有可能WebView::onLoadFailed
调用网络错误(无法访问或无效的网址等)。
您可以尝试做的是收听NetworkAccessManager的finished
信号,以检查网络回复是否错误。
connect (viewer.engine()->networkAccessManager(), SIGNAL(finished(QNetworkReply*)),
logger, SLOT(onNetworkRequestFinished(QNetworkReply*)));
其中logger
是带onNetworkRequestFinished
个插槽的QObject。
void Logger::onNetworkRequestFinished(QNetworkReply* reply)
{
if (reply->error() != QNetworkReply::NoError) {
qDebug() << "network error:" << reply->errorString();
}
reply->deleteLater();
}
有关详细信息,请参阅QNetworkReply
documentation。