【问题标题】:Embedding image in QWebView with JavaScript使用 JavaScript 在 QWebView 中嵌入图像
【发布时间】:2011-01-23 01:44:58
【问题描述】:

我正在使用 Qt 4.6(64 位 Arch Linux,尽管这不重要)编写一个小型应用程序,它允许用户使用打开 contentEditable 的 QWebView 编辑文档。但是,由于某种原因,嵌入图像不起作用。这是一个代码sn-p:

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 正常工作,而不是图像。想法?

【问题讨论】:

    标签: javascript image qt webkit embed


    【解决方案1】:

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

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

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

    最后但并非最不重要的一点是,查看this 示例应用程序——他们使用类似的Javascript execCommand() 方法,他们以稍微不同的方式做一些事情,例如使用QUrl::fromLocalFile

    祝你好运!

    【讨论】:

    • 我已经尝试了很多这样的东西。我戳了一圈,然后在这里问,然后继续戳。它增加了答案的几率:)
    【解决方案2】:

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

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

    从我潜伏在 WebKit 邮件列表档案中收集到的信息来看,为了从本地文件系统加载文件,必须将 URI 设置为 file:,这样就可以完成工作。

    【讨论】:

      猜你喜欢
      • 2019-09-18
      • 2016-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-28
      • 2018-09-30
      相关资源
      最近更新 更多