Qt--打开文件所在目录并选中文件(支持全平台)

void showFileInFolder(const QString &filePath) {
    QStringList param;
#if defined(Q_OS_WIN)
    param << "/select"
          << "," << QDir::toNativeSeparators(filePath);
    QProcess::startDetached("explorer.exe", param);
#elif defined(Q_OS_MAC)
    param << "-e"
          << QString("tell application \"Finder\" to reveal POSIX file \"%1\"")
                 .arg(filePath);
    QProcess::execute(QLatin1String("/usr/bin/osascript"), param);
    param.clear();
    param << "-e"
          << "tell application \"Finder\" to activate";
    QProcess::execute("/usr/bin/osascript", param);
#else
    QFileInfo finfo(filePath);
    QString dest = "array:string:'" + QUrl::fromLocalFile(filePath).url() + "'\t";
    QString tmpfile(DirHandler::GetLogPath() + "open_folder.sh");
    QString targetType = finfo.isDir()
                             ? "org.freedesktop.FileManager1.ShowFolders\t"
                             : "org.freedesktop.FileManager1.ShowItems\t";
    QFile openfd(tmpfile);
    if (openfd.open(QFile::WriteOnly)) {
        QTextStream out(&openfd);   
        out << "#!/bin/bash\n\n"
            << "dbus-send\t"
            << "--session\t"
            << "--print-reply\t"
            << "--dest=org.freedesktop.FileManager1\t"
            << "--type=method_call\t"
            << "/org/freedesktop/FileManager1\t" << targetType << dest
            << "string:''\n";
        openfd.close();
    }
    openfd.setPermissions(QFileDevice::ExeOwner | QFileDevice::ExeUser |
                          QFileDevice::ExeGroup | QFileDevice::ExeOther |
                          QFileDevice::ReadOwner | QFileDevice::WriteGroup |
                          QFileDevice::WriteOwner);
    QProcess pro;
    pro.execute(tmpfile);
    pro.waitForFinished();
    openfd.remove();
#endif
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值