Qt 复制文件到剪贴板

本文介绍了一种使用 Qt 技术将图片内容和文件路径复制到剪贴板的方法。通过 QImage 和 QClipboard 类可以实现图片的复制功能;而复制文件路径则涉及到 QMimeData 的应用,确保了在不同应用程序间可以正确粘贴文件路径。
摘要由CSDN通过智能技术生成

复制图片的内容到剪贴板:

        QImage img(path);
        Q_ASSERT(!img.isNull());
        cb->setImage(img, QClipboard::Clipboard);


 

复制大量文件的路径:

void copyFilesToClipboard(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(QFileInfo(path).absoluteFilePath());
        gnomeFormat.append(QUrl::fromLocalFile(path).toEncoded()).append("\n");
    }

  //setText  need to be called, or you can't clip the context to clipboard.
    newMimeData->setText(text);
   newMimeData->setUrls(dataUrls);
    gnomeFormat.remove(gnomeFormat.length() - 1, 1);
    newMimeData->setData("x-special/gnome-copied-files", gnomeFormat);
    // Set the mimedata
    cb->setMimeData(newMimeData);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值