Russian Qt Forum

Qt => Общие вопросы => Тема начата: zosia от Март 10, 2009, 00:56



Название: QProcess - открытие файла
Отправлено: zosia от Март 10, 2009, 00:56
Hello all.

Есть вопрос, как открыть mp3 файл в программе по умолчанию?
т.е.
Код
C++ (Qt)
QString filename="C:\some\Artist - Song.mp3";
QProcess::execute("cmd /c start winamp.exe \""+filename+"\"");
Откроет файл в WinAmp'е..  а если WinAmp'а нету? Или пользователь слушает музыку в другой программе и поставил ассоциироваться mp3 файлы с ней? Как открыть по умолчанию?

Код
C++ (Qt)
QProcess::execute("cmd /c start \""+filename+"\"");

- открвает черное окно - Command Prompt и всё...


Название: Re: QProcess - открытие файла
Отправлено: Alex Custov от Март 10, 2009, 01:04
QDesktopServices::openUrl() ? В винде на худой конец можно и ShellExecute()


Название: Re: QProcess - открытие файла
Отправлено: zosia от Март 10, 2009, 01:32

Так вроде QDesktopServices::openUrl() только для файлов (url) в сети?
И как можно открыть локальный файл с помощью ShellExecute?


Название: Re: QProcess - открытие файла
Отправлено: Alex Custov от Март 10, 2009, 01:42
1) http://en.wikipedia.org/wiki/URL

2) могу напутать, на винде давно не писал:
Код:
ShellExecute(0, "OPEN", "c:\1.wav", "", "", 0);


Название: Re: QProcess - открытие файла
Отправлено: zosia от Март 10, 2009, 01:48
спасибо.

блин, 2 часа в гугле ни к чему не привели...
помогло следующее:

Код
C++ (Qt)
QProcess::execute("cmd /c \""+filename+"\"");
 

т.е. просто убрали START...


Название: Re: QProcess - открытие файла
Отправлено: zosia от Март 10, 2009, 02:25
теперь ясно про Qurl)
т.е. лучше всё таки это сделать с QDesktopServices

вот так:

Код
C++ (Qt)
filename = filename.replace(QString(" "),QString("%20"));
QUrl url("file:/"+filename);
QDesktopServices::openUrl(url);
 

 ::)


Название: Re: QProcess - открытие файла
Отправлено: Alex Custov от Март 10, 2009, 03:05
QUrl::fromLocalFile()