当前位置:开发工具->QT->如何在QTextEdit中粘贴图片?本文给你思路!

原创版权标志如何在QTextEdit中粘贴图片?本文给你思路!

作者:凌风  发表时间:2016/2/13 16:25:24  阅读:
[摘要] 本人在制作电子书读书笔记小工具时碰到了一个问题,如何把pdf中重点的语句直接截图然后放进笔记中,于是研究了如何模仿QQ聊天框的直接ctrl+v粘贴截图。终于搞定了。
文章来源:C++技术网原创文章版权所有,会员文章禁止转载。非会员文章转载做好本文超链接即表示授权转载。通过文章下面的分享按钮可以自由分享所有文章。

问题描述:

        在开发自用的小工具:电子书读书笔记.exe 时,突然想把重要的段落截图放进笔记本,但是不知道该怎么做。于是想到了模仿QQ聊天框的办法,但是正常情况下的QTextEdit是无法直接截图然后粘贴进去的。

问题解决办法:

        首先去查查QTextEdit控件关于热键的处理,经过查询才知道QTextEdit支持了很多的热键,包括:

以上为QTextEdit默认支持的,但是对于CTRL+V粘贴图片无法处理(本人Qt5.4 + vs2013),所以只能手工处理图片,经过查询,发现在QTextEdit中,它支持如此格式的图片添加:

于是,思路来了:在执行ctrl+v时把图片数据直接保存为图片文件,然后引用那个图片文件(类似于cache文件)。

代码为:

bool NotePad::eventFilter(QObject *obj, QEvent *event)
{
 if (obj == ui->textEdit)
 {
 if (event->type() == QEvent::KeyPress)
 {
 QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);

 if (keyEvent->modifiers() == Qt::ControlModifier && keyEvent->key() == Qt::Key_V)
 {
 QClipboard *board = QApplication::clipboard();
 if (board->mimeData()->hasImage())
 {
 QImage image = board->image();
 image.save("C:/Windows/Temp/temp.png");
 ui->textEdit->append("<img src=C:/Windows/Temp/temp.png>");
 }
 else
 return false;//一定返回false!!
 }
 return false;//一定返回false!! }
 else
 {
 return false;//一定返回false
 }
 }
 else
 { // pass the event on to the parent class
 return NotePad::eventFilter(obj, event);
 }
}
注意:以上代码在使用时,在构造函数中加上一句话:ui->textEdit->isntallEvenfilter (this);(具体见Qt帮助文件)

效果如下:

(PS:那个带字幕的就是图片)

文章来源:C++技术网原创文章版权所有,会员文章禁止转载。非会员文章转载做好本文超链接即表示授权转载。通过文章下面的分享按钮可以自由分享所有文章。


返回顶部

在线提问
问题标题:
问题描述:(简陋的描述会导致问题被最后回答、没有针对性回答甚至无法解答。请确保问题描述的足够清楚。)

C++技术网群幕群聊

弹幕