找回密码
 立即注册
  • QQ空间
  • 回复
  • 收藏

将QQ中的图文聊天内容显示到Qt界面

yafeilinux 2017-1-28 23:54 21054人围观 yafeilinux原创


论坛讨论

请到这里讨论该文章!


正文

这个问题是一个网友的提出的,简单来说就是先全选并复制QQ聊天内容(里面包含图片),然后将其显示到Qt的界面上。实际这个问题就是如何将剪贴板上的内容显示出来,默认的文本是没有问题的,但是包含图片就会出现问题,下面分步骤来演示讲解。


1.下面是聊天内容截图:

1.jpg


2.然后我们在程序中添加一个按钮和一个标签,先复制所有的聊天内容,然后运行程序,单击按钮时让标签中显示复制的内容。

这里主要是修改按钮单击信号对应的槽中的代码:

void MainWindow::on_pushButton_clicked()
{   
   const QClipboard *clipboard = QApplication::clipboard();   
   const QMimeData *mimeData = clipboard->mimeData();   
  if (mimeData->hasHtml()) {        
         QString html = mimeData->html();      
         ui->label->setText(html);        
        qDebug() <<"html: " <<  html;        
        ui->label->setTextFormat(Qt::RichText);   
       }
}

运行程序,按下按钮,效果如下图所示:

2.jpg


3.在上面的代码中我已经测试过了,mimeData返回的内容中只包含html内容,所以只获取了html内容。为什么图片无法显示呢,我们查看一下输出的html内容:

html:  "

yafeilinux 2013-9-30 16:52:47


hehehehhe
yafeilinux 2013-9-30 17:02:12



"



4.可以看到这里的图片src路径内容为file:///D:\Program Files\Tencent\QQ\Users\188581941\Image\1NFHJL2G18M6V$WBRDUPDN1.jpg,

这不是我们的标准路径,所以图片无法显示,我们需要将“file:///”去掉,然后把后面的“\”都更换为“/”,所以修改代码如下:

void MainWindow::on_pushButton_clicked()
{   
      const QClipboard *clipboard = QApplication::clipboard();   
      const QMimeData *mimeData = clipboard->mimeData();   
       if (mimeData->hasHtml()) {        
               QString html = mimeData->html();        
               html.replace(QString("\\"), QString("/"));       
              html.remove("file:///");        
               ui->label->setText(html);        
              qDebug() <<"html: " <<  html;      
              ui->label->setTextFormat(Qt::RichText);   
              }
}


5.再次运行程序,先复制聊天窗口的内容,然后按下按钮,效果出来了:

3.jpg

不仅如此,复制其他所有的副文本格式也是没有问题的,例如复制百度网页内容:

4.jpg

复制word文档内容:

6.jpg
5.jpg

另外,word中的表格、艺术字、图表、绘图都是可以显示的啊。呵呵,是不是感觉恍然大悟,原来显示word文档还可以这样来做!

7.jpg


呵呵,这段代码用处可就大了,Qter们发挥想象吧!




13人点赞鲜花

3人点赞握手

雷人

2人点赞路过

鸡蛋

刚表态过的朋友 (18 人)

原作者: yafeilinux

yafeilinux和他的朋友们微信公众号二维码

微信公众号

专注于Qt嵌入式Linux开发等。扫一扫立即关注。

Qt开源社区官方QQ群二维码

QQ交流群

欢迎加入QQ群大家庭,一起讨论学习!


公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了