在Qt中,我们可以使用QClipboard类来访问窗口系统的剪贴板对象。剪贴板为我们在不同的应用间拷贝粘贴数据提供了一种简单的机制。并且,其所支持的数据类型和Qt中的拖放操作所支持的类型相同。
另外,在QApplication类中,还为我们提供了一个静态方法clipboard(),我们可以使用该方法来获得应用程序的全局剪贴板对象。例如,
QClipboard *clipboard = QApplication::clipboard();
setText()可以用来传递Unicode字符串,setPixmap()和setImage()可以用来传递图片。遇到复杂的数据类型,则要借助于QMimeData类来完成。
QMimeData用于描述可以存储在剪贴板中并通过拖放机制传输的信息。QMimeData对象将它们持有的数据与相应的MIME类型相关联,以确保信息可以在应用程序之间安全地传输,并在同一应用程序中四处复制。
常用的类型
text() setText() text/plain
html() setHtml() text/html
url() setUrls() text/uri-list
imageData() setImageData() image/ *
colorData() setColorData() application/x-color
一般用setData来设置数据类型
case Link_Copy:
{
//解析发送过来的left 中的数据进行解析
QJsonDocument json = QJsonDocument::fromJson(QByteArray::fromPercentEncoding(left));
QVariantMap result = json.toVariant().toMap();
QString path = result[“path”].toString(); //获取到文件路径
QClipboard *clib = QApplication::clipboard();
QMimeData *mimData = new QMimeData();
//向剪切板去写入内容
mimData->setData(“text/uri-list”,QByteArray(“file:///”+path.toUtf8()));//这个“file:///”必须添加
qInfo()<<QByteArray(“file:///”+path.toUtf8());//这里注释查看路径和避免出现中文字符
clib->setMimeData(mimData);
break;
}