[英]How can I set multiple images to system clipboard by QClipboard?
我现在可以通过QClipboard :: setImage()将一个图像设置到系统剪贴板。
如何通过QClipboard将多张图像设置到系统剪贴板?
任何答案都将有所帮助,谢谢。
我使用了mimedata遵循Haru的建议,现在可以将多个图像复制到文件系统。 但是当我将多个图像而不是图像复制到网站时,它们将是URI。 有人有主意吗? 非常感谢你!
void copyImageToClipboard(const QStringList &paths)
{
// Get clipboard
QClipboard *cb = QApplication::clipboard();
// Ownership of the new data is transferred to the clipboard.
QMimeData* newMimeData = new QMimeData();
// Copy old mimedata
const QMimeData* oldMimeData = cb->mimeData();
for ( const QString &f : oldMimeData->formats())
newMimeData->setData(f, oldMimeData->data(f));
// Copy file (gnome)
QByteArray gnomeFormat = QByteArray("copy\n");
QString text;
QList<QUrl> dataUrls;
for (QString path : paths) {
if (!path.isEmpty())
text += path + '\n';
dataUrls << QUrl::fromLocalFile(path);
gnomeFormat.append(QUrl::fromLocalFile(path).toEncoded()).append("\n");
}
newMimeData->setText(text.endsWith('\n') ? text.left(text.length() - 1) : text);
newMimeData->setUrls(dataUrls);
gnomeFormat.remove(gnomeFormat.length() - 1, 1);
newMimeData->setData("x-special/gnome-copied-files", gnomeFormat);
// Copy Image Date
QImage img(paths.first());
Q_ASSERT(!img.isNull());
newMimeData->setImageData(img);
// Set the mimedata
cb->setMimeData(newMimeData);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.