Qt how to insert html into an editable QWebView at the cursor position?

与世无争的帅哥 提交于 2019-12-10 11:03:07

问题


I'm trying to use QWebView to implement a blog post editor. And I have some sample html snippets to insert into the editor by triggering menu actions. However, it's not convenient as QTextEdit to insert html. As for why I don't use QTextEdit, see my test code following:

QTextEdit *edit = new QTextEdit;
edit->insertHtml(tr("<div class=\"gci-hello\">Hello</div>"));
qDebug() << edit->toHtml(); // --> the div tag disappeared

So, if I use QWebView, the div tag will be reserved. But I can't find out how to insert my snippet at the cursor postion on the view.


回答1:


Use execCommand with InsertHTML :

QString html = "<div>Some text</div>";
QString js = QString("document.execCommand('InsertHTML',false,'%1');").arg(html);
webview->page()->mainFrame()->evaluateJavaScript(js);

And if there are single quote characters in the HTML snippet, make sure you quote them with a backslash, since the snippet is injected through a JS string.



来源:https://stackoverflow.com/questions/17865040/qt-how-to-insert-html-into-an-editable-qwebview-at-the-cursor-position

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!