16,213
社区成员
发帖
与我相关
我的任务
分享
QClipboard *clipboard = QApplication::clipboard();
const QMimeData *mimeData = clipboard->mimeData();
if (mimeData->hasImage()){
QUrl url(QString("dropped_image_"));
ui->textEdit->document()->addResource(QTextDocument::ImageResource, url, qvariant_cast<QImage>(mimeData->imageData()));
QTextCursor cursor = ui->textEdit->textCursor();
cursor.insertImage(url.toString());
}
那么复制时剪切板的内容为:
"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n
<html>
<head>
<meta name=\"qrichtext\" content=\"1\" />
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />
<style type=\"text/css\">\np, li { white-space: pre-wrap; }\n</style>
</head>
<body>\n
<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">
<img src=\"dropped_image_\" /><!--EndFragment-->
</p>
</body>
</html>"
对于word,识别不到路径"dropped_image_",所以复制的是一张空图
最简单的做法是将图片保存到本地:
QClipboard *clipboard = QApplication::clipboard();
const QMimeData *mimeData = clipboard->mimeData();
if (mimeData->hasImage()){
QString strPath("D:/workspace/Demo/123.jpg");
QImage image = qvariant_cast<QImage>(mimeData->imageData());
image.save(strPath);
QTextCursor cursor = ui->textEdit->textCursor();
QUrl url(strPath);
cursor.insertImage(url.toString());
}
这种做法需要在程序关闭的时候清理保存的图片