Cómo hacer referencia a la carpeta Recursos de código
Pregunta
Estoy portar una aplicación Qt C ++ de Windows a OSX y no puedo envolver mi cabeza en torno al concepto .app paquete. Espero que alguien pueda ayudarme a entender.
Mi ejecutable vive aquí: MyProgram.app/Content/MacOS/MyProgram.exe
Mi carpeta de recursos vive aquí: MyProgram.app/Content/Resources /
En mi código que utilizo una ruta relativa para hacer referencia a elementos de la carpeta de recursos:
"../ Recursos / something.png"
Esto funciona muy bien si abro el paquete .app y ejecutar el .exe directamente.
Pero no es así como el paquete de .app está destinado a trabajar. El usuario se supone que haga clic en el paquete .app en el Finder para ejecutar el programa. Pero en ese caso mi ruta relativa ya no funciona, y esto es lo que no entiendo.
¿Alguien entiende mi problema y cómo puedo solucionarlo?
Solución
QApplication::applicationDirPath()
http://doc.qt.io/qt-5/qcoreapplication .html # applicationDirPath
Otros consejos
Nosotros usamos:
QDir
CoreDir::bundle()
{
// Trolltech provided example
CFURLRef appUrlRef = CFBundleCopyBundleURL( CFBundleGetMainBundle() );
CFStringRef macPath = CFURLCopyFileSystemPath( appUrlRef, kCFURLPOSIXPathStyle );
QString path = CFStringToQString( macPath );
CFRelease(appUrlRef);
CFRelease(macPath);
return QDir( path );
}
Lo mismo ocurre con CoreDir :: paquete () rutaArchivo ( ""); ../Resources.
Al compilar su producto, han intentado fijar el camino de la Resources
que es relativa? De lo contrario, puede recuperar el haz principal, la URL de la aplicación de la misma y lo añadirá a la URL de Recursos.
Hay un manual para todo, lo que parece:)