2010-08-25 2 views
14

У меня есть следующие:QT Open по умолчанию Проводник файлов на * NIX

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?

ответ

37

Использование QDesktopServices и его OpenUrl функция:

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

Он должен работать со всеми OS'es. Я тестировал его только в Windows.

+1

Работает как шарм на Windows XP SP2, Mac OSX 10.6.4 и Ubuntu. –

+0

Хмм ... для меня (в Windows) это фактически открывает файл, используя ассоциацию файлов по умолчанию. Например, он открывает WAV-файл в Media Player, а не навигацию к нему в проводнике Windows. Любая идея, как получить поведение Explorer-подобного? – aardvarkk

+0

Я предполагаю, что вам нужно передать каталог, содержащий файл, в качестве аргумента, а не сам файл. –