请考虑以下代码:
QTextDocument * doc = ui->textBrowser->document();
doc->addResource(QTextDocument::ImageResource, QUrl("img://smiley"), QImage("happy.png"));
QTextCursor cursor = ui->textBrowser->textCursor();
cursor.insertHtml("Sample text ");
cursor.insertImage("img://smiley");
ui->textBrowser->setTextCursor(cursor);
(ui-> textBrowser是指向QTextBrowser对象的指针)
当我将图像复制到剪贴板时,它由对象替换字符(U + FFFC)表示。是否可以更改此行为并保存,例如“:-)”而不是?
请注意,我使用的是Qt 5.2,因此可以使用Qt 5中引入的任何函数。
答案 0 :(得分:0)
我担心没有简单的方法。在网络浏览器中alt
属性会有所帮助,但Qt不支持它。
您可以跟踪剪贴板的更改并更正其内容。
初始化:
QClipboard* clipboard = QApplication::clipboard();
connect(clipboard, SIGNAL(changed(QClipboard::Mode)),
this, SLOT(clipboard_changed()));
剪贴板更正(示例):
void MainWindow::clipboard_changed() {
QClipboard* clipboard = QApplication::clipboard();
const QMimeData* data = clipboard->mimeData();
QString html = data->html();
if (html.contains("<img src=\"img://smiley\" />")) {
QString new_html = html;
new_html.replace("<img src=\"img://smiley\" />", ":-)");
QTextDocument doc;
doc.setHtml(new_html);
QString text = doc.toPlainText();
if (text != data->text()) {
QMimeData* new_data = new QMimeData();
new_data->setHtml(html);
new_data->setText(doc.toPlainText());
clipboard->setMimeData(new_data);
}
}
}
当然,对于真正的程序,您需要更复杂的实现。
我只使用QTextDocument
将HTML转换为纯文本。