正文 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: " 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.再次运行程序,先复制聊天窗口的内容,然后按下按钮,效果出来了: 不仅如此,复制其他所有的副文本格式也是没有问题的,例如复制百度网页内容: 复制word文档内容: 另外,word中的表格、艺术字、图表、绘图都是可以显示的啊。呵呵,是不是感觉恍然大悟,原来显示word文档还可以这样来做! 呵呵,这段代码用处可就大了,Qter们发挥想象吧! |