使用JavaScript在QWebView中嵌入图像

时间:2010-03-03 06:18:19

标签: javascript image qt webkit embed

我正在用Qt 4.6编写一个小应用程序(64位Arch Linux,尽管这无关紧要),它允许用户使用启用了contentEditable的QWebView编辑文档。但是,由于某些原因,嵌入图像不起作用。这是一段代码:

void LeafEditView::onInsertImage()
{
    // bring up a dialog, ask for an image
    QString imagePath = QFileDialog::getOpenFileName(this,tr("Open Image File"),"/",tr("Images (*.png *.xpm *.jpg)"));
    ui->leafEditor->page()->mainFrame()->documentElement().evaluateJavaScript("document.execCommand('insertImage',null,'"+imagePath+"');");
}

测试图像确实存在,但绝对没有任何反应。粗体/斜体/强调所有工作都可以通过JavaScript,而不是图像。想法?

2 个答案:

答案 0 :(得分:1)

检查QWebSettings::AutoLoadImages是否已启用。

您还可以尝试: document.execCommand('insertImage',false,'"+imagePath+"');

尝试使用相对于图像的绝对路径。

最后但并非最不重要的是,围绕this示例应用程序 - 它们使用类似的Javascript execCommand()方法,它们以稍微不同的方式执行某些操作,例如使用QUrl::fromLocalFile。< / p>

祝你好运!

答案 1 :(得分:0)

事实证明,WebKit的策略是在没有进行一些按摩的情况下不从本地文件系统加载资源。在我的代码中,我有一个WebKit视图,我用它来编辑笔记本中的叶子。以下单行解决了我的问题:

 ui->leafEditor->page()->mainFrame()->setHtml("<html><head></head><body></body></html>",QUrl("file:///"));

通过潜伏在WebKit邮件列表档案中我收集到的内容,为了从本地文件系统加载文件,必须将URI设置为file:,这就完成了工作。