我正在用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,而不是图像。想法?
答案 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:,这就完成了工作。