我成功地编译了Qt 4,包括WinK的WebKit。 QWebView似乎运行正常 - 我可以加载HTML5文档并显示它。
ui.webView->page()->settings()->setAttribute(QWebSettings::JavascriptEnabled, true);
ui.webView->setUrl(QUrl::fromLocalFile(QFileInfo(QLatin1String("test.html")).absoluteFilePath()));
但是,只要页面包含任何JavaScript(即使空脚本标记已经导致问题),QWebView也只会显示空白页面。
QWebInspector窗口也无法显示,因为它只显示一个空白窗口。
我怀疑这是一个常见的问题,所以我的问题是,我如何能够深入研究这个问题。 QWebView有调试日志吗? 不幸的是,执行时没有异常或断言失败。
有什么想法吗? :) 提前谢谢。
修改: 这是创建问题的测试代码。 loadFinished的前四行是一些用于检查有效指针的测试代码,以及我是否可以在QWebFrame上调用方法。所有代码行都执行得很好,直到我获得访问冲突的evaluateJavaScript。
我无法在setHtml中发布HTML代码,似乎被Stackoverflow禁止。
ce0::ce0(QWidget *parent, Qt::WFlags flags)
: QMainWindow(parent, flags)
{
ui.setupUi(this);
connect(ui.webView, SIGNAL(loadFinished(bool)), SLOT(loadFinished(bool)));
ui.webView->page()->settings()->setAttribute(QWebSettings::LocalContentCanAccessRemoteUrls, true);
ui.webView->page()->settings()->setAttribute(QWebSettings::LocalContentCanAccessFileUrls, true);
ui.webView->page()->settings()->setAttribute(QWebSettings::DeveloperExtrasEnabled, true);
ui.webView->page()->settings()->setAttribute(QWebSettings::JavascriptEnabled, true);
//ui.webView->setUrl(QUrl::fromLocalFile(QFileInfo(QLatin1String("test.html")).absoluteFilePath()));
ui.webView->setHtml(...);
}
void ce0::loadFinished(bool ok) {
QWebPage* p = ui.webView->page();
QWebFrame* f = p->mainFrame();
QString qs = f->title();
bool x = ui.webView->page()->settings()->testAttribute( QWebSettings::JavascriptEnabled );
f->evaluateJavaScript("document.getElementById(\"content\").innerHTML = \"Whatever\";");
}