¿Cómo lanzar la aplicación asociada para un archivo / directorio / URL?

Linux parece ser fácil:xdg-open <file/directory/URL>.

Aparentemente,Mac es similar:open debe utilizarse en lugar dexdg-open. No tengo acceso a una Mac, así que no pude probarlo.

porWindows, Encontré 4 sugerencias diferentes y las que he probado fallaron.

¿Existe una forma no java y multiplataforma para iniciar la aplicación asociada para un determinado tipo de archivo? sugiere
start

¿Cómo enfocar el programa predeterminado de un archivo de shell abierto, desde Java? sugiere
cmd /c start ...

¿Cómo abrir el editor del sistema de usuario preferido para un archivo dado?
¿Cómo averiguar el abridor de archivos predeterminado con Java? sugerir
RUNDLL32.exe

¿Cuál es la forma correcta de usar ShellExecute () en C para abrir un .txt?
Abrir archivo con el programa nativo de Windows dentro del código C ++
¿Cómo usar ShellExecute para abrir archivos html en Windows usando C ++? sugerir
ShellExecute

He intentado los primeros 3 consystem() yQProcess::startDetached() y"http://www.stackoverflow.com" como argumento pero todos fallaron;start Sin embargo, funciona bien desde la línea de comandos. No he intentadoShellExecute todavía.

¿Cuál es el equivalente de Windows dexdg-open? Me parece que esstart pero ¿por qué mis intentos constart ¿fallar?

EsShellExecute mi única opción?

EDITAR penséQDesktopServices::openUrl() era solo para páginas web porque no funcionaba para archivos o directorios.

Después de un poco de depuración me di cuenta de que si sustituyo\\ con/ en la ruta en Windows, funciona para archivos pero los directorios aún no están abiertos. ¿Alguna idea de lo que estoy haciendo mal?

QDir dir("C:/Documents and Settings/ali");

qDebug() << "Exists? " << dir.exists();

qDebug() << dir.absolutePath();

QDesktopServices::openUrl(QUrl(dir.absolutePath()));

qDebug() << "External app called";

Salida de la aplicación:

Exists?  true 
"C:/Documents and Settings/ali" 
External app called 

Pero no pasa nada, el directorio no se abre. En Linux, los directorios se abren con el administrador de archivos predeterminado como se esperaba.

SOLUCIÓN: Debido al error Qty Las peculiaridades de Windows (ventana de aplicación con formato incorrecto), terminé usandoShellExecute. Eso me da suficiente flexibilidad para lograr exactamente lo que quiero a un costo ...

Respuestas a la pregunta(1)

Su respuesta a la pregunta