在*nix系统中打开默认文件浏览器的QT命令

17

我有以下内容:

QProcess *process = new QProcess(this);
QString path = QDir::toNativeSeparators(QApplication::applicationPath);
#if defined(Q_OS_WIN)

process->start("explorer.exe",  QStringList() << path);

#elif defined(Q_OS_MAC)

process->start("open", QStringList() << path);

#endif

我应该如何在Ubuntu系统中实现相同的行为?

1个回答

40

使用QDesktopServices及其openUrl函数:

QString path = QDir::toNativeSeparators(QApplication::applicationDirPath());
QDesktopServices::openUrl(QUrl::fromLocalFile(path));

它应该能在所有操作系统上运行。我只在Windows上测试过。


2
在Windows XP SP2、Mac OSX 10.6.4和Ubuntu上运行得非常好。 - Gad D Lord
嗯...对我来说(在Windows上),这实际上是使用默认文件关联打开文件。例如,它会在媒体播放器中打开.wav文件,而不是在Windows资源管理器中导航到它。有什么办法可以获得类似资源管理器的行为吗? - aardvarkk
我猜你需要将包含文件的目录作为参数传递,而不是文件本身。 - J. Martinot-Lagarde

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接