将html附加到QWebView?

时间:2013-12-09 14:44:55

标签: qt

我有一个webView设置来显示聊天消息。

我是这样开始的:

ui->webView->setHtml("<html style=\"font-family:Lucida Grande;font-size:13px;\">
                     <head></head>
                     <body style=\"padding:0px;margin:0px;\"> 
                     <div id=\"date\"style=\"position:fixed;top:0;height:40px;background-color:#ffffff;opacity:0.9;width:100%;border-bottom:1px solid #f1f1f1;\"><span style=\"display:block;color:#6d7382;padding-top:12px;padding-left:14px;\">friday</span></div>  
                     <div style=\"padding:12px;background-color:#f5f5f5;display:block;border-bottom:1px solid #f1f1f1;border-top:1px solid #f1f1f1;\"><div style=\"color:#606775;font-weight:bold;\">Bill</div><div style=\"color:#5a5a5a;\"><p>Hello</p></div></div>   
                     </body></html>");

(以上代码全部在QT的一行,我只需按Enter键以便于在此处阅读)

现在我正试图弄清楚如何以新聊天消息的形式附加div's

试图像这样追加:

QString html = "<div>Test test</div>";
QString js = QString("document.execCommand('InsertHTML',false,'%1');").arg(html);
ui->webView->page()->mainFrame()->evaluateJavaScript(js);

关闭日期工作正常,我这样做:

// Switches out the date
QWebFrame *pSource = ui->webView->page()->mainFrame();
QWebElement dateDiv = pSource->findFirstElement("#date");
dateDiv.replace("<div id=\"date\"style=\"position:fixed;top:0;height:40px;background-color:#ffffff;opacity:0.9;width:100%;border-bottom:1px solid #f1f1f1;\"><span style=\"display:block;color:#6d7382;padding-top:12px;padding-left:14px;\">sunday</span></div>");

然而,插入新的div's是我无法开展的工作。 我有什么想法吗?

1 个答案:

答案 0 :(得分:1)

这为我添加了给定的div给QWebView:

ui->webView->page()->mainFrame()->documentElement().appendInside(html);

顺便说一句。长长的html你可以像这样分开:

    ui->webView->page()->mainFrame()->setHtml("<html style=\"font-family:Lucida Grande;font-size:13px;\">" \
                     "<head></head>" \
                     "<body style=\"padding:0px;margin:0px;\">" \
                     "<div id=\"date\"style=\"position:fixed;top:0;height:40px;background-color:#ffffff;opacity:0.9;width:100%;border-bottom:1px solid #f1f1f1;\"><span style=\"display:block;color:#6d7382;padding-top:12px;padding-left:14px;\">friday</span></div>" \
                     "<div style=\"padding:12px;background-color:#f5f5f5;display:block;border-bottom:1px solid #f1f1f1;border-top:1px solid #f1f1f1;\"><div style=\"color:#606775;font-weight:bold;\">Bill</div><div style=\"color:#5a5a5a;\"><p>Hello</p></div></div>" \
                     "</body></html>");