|
这个问题是一个网友的提出的,简单来说就是先全选并复制QQ聊天内容(里面包含图片),然后将其显示到Qt的界面上。实际这个问题就是如何将剪贴板上的内容显示出来,默认的文本是没有问题的,但是包含图片就会出现问题,下面分步骤来演示讲解。
1.下面是聊天内容截图:
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);
}
}
运行程序,按下按钮,效果如下图所示:
3.在上面的代码中我已经测试过了,mimeData返回的内容中只包含html内容,所以只获取了html内容。为什么图片无法显示呢,我们查看一下输出的html内容:
html: "<!--StartFragment--><!--StartFragment --><DIV>
yafeilinux 2013-9-30 16:52:47<br><IMG src="file:///D:\Program Files\Tencent\QQ\Users\188581941\Image\1NFHJL2G18M6V$WBRDUPDN1.jpg" ><br><br>hehehehhe <br>yafeilinux 2013-9-30 17:02:12<br><IMG src="file:///D:\Program Files\Tencent\QQ\Users\188581941\Image\C3@@APJ04@`M~F}6RGT@5(4.jpg" ><br><br>
</DIV><!--EndFragment-->"
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.再次运行程序,先复制聊天窗口的内容,然后按下按钮,效果出来了:
不仅如此,复制其他所有的副文本格式也是没有问题的,例如复制百度网页内容:
复制word文档内容:
另外,word中的表格、艺术字、图表、绘图都是可以显示的啊。呵呵,是不是感觉恍然大悟,原来显示word文档还可以这样来做!
呵呵,这段代码用处可就大了,Qter们发挥想象吧!
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
评分
-
查看全部评分总评分 : 人气 +4
|