linux Qt 复制文件至剪切板

linux Qt 复制文件至剪切板

  • UOS系统
  • 其他系统

UOS系统

  QClipboard *cb = QApplication::clipboard();
  QMimeData* newMimeData = new QMimeData();
  newMimeData->setData("x-special/gnome-copied-files", QByteArray("copy\nfile:///home/admin1/Desktop/111.txt"));
  newMimeData->setData("text/uri-list", QByteArray("file:///home/admin1/Desktop/111.txt"));
  cb->setMimeData(newMimeData);
以上两种mime type需要同时设定。不明白原因,尝试的结果。

其他系统

如果按照网上的方法都不管用的话,可以尝试下面的方法:
测试程序,运行前先做复制文件操作,然后运行程序,打印出系统复制文件所相关的mime type。

  QClipboard *clipboard = QApplication::clipboard();
  const  QMimeData *mimeData = clipboard->mimeData();
  qDebug() << mimeData->formats();

输出结果:("text/plain", "x-special/gnome-copied-files", "text/uri-list")
然后添加代码:

  qDebug() <<  mimeData->data("x-special/gnome-copied-files");
  qDebug() <<  mimeData->data("text/uri-list");
  qDebug() <<  mimeData->data("text/plain");

复制文件,运行程序。
具体打印类型需根据自己的输出结果修改。
输出结果:
"copy\nfile:///home/admin1/Desktop/111.txt" "file:///home/admin1/Desktop/111.txt\r\n" "/home/admin1/Desktop/111.txt"
找出和复制的文件相关的类型,通过setData()操作各种组合,然后实现复制功能。

你可能感兴趣的:(linux,qt,c++)