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

作者:凌风  发表时间:2016/2/13 16:25:24  阅读:1637
[摘要]本人在制作电子书读书笔记小工具时碰到了一个问题,如何把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++技术网 原创文章版权所有,未经授权,禁止转载。



返回顶部

关于我们 QQ群 广告服务 增值服务 捐款资助 版权声明 RSS订阅 站点地图 百度网站地图 意见反馈
鄂ICP备14001349号-2, Copyright © 2014-2017, CJJJS.COM/CJJJS.CN, All Rights Reserved

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

C++技术网群聊