Como fazer referência a pasta Recursos em código
Pergunta
Eu sou portando um c ++ aplicação Qt a partir do Windows para OSX e não pode envolver minha cabeça em torno do conceito .app pacote. Espero que alguém possa me ajudar a entender.
As minhas vidas executáveis ??aqui: MyProgram.app/Content/MacOS/MyProgram.exe
A minha pasta de recursos vive aqui: MyProgram.app/Content/Resources /
No meu código eu uso um caminho relativo para elementos de referência na pasta de recursos:
"../ Resources / something.png"
Isso funciona muito bem se eu abrir o pacote .app e executar o arquivo .exe diretamente.
Mas isso não é como o pacote .app é destinado ao trabalho. O usuário deve clicar sobre o pacote .app no ??Finder para executar o programa. Mas, nesse caso o meu caminho relativo obras não mais, e é isso que eu não entendo.
Alguém entende o meu problema e como posso corrigir isso?
Solução
QApplication::applicationDirPath()
http://doc.qt.io/qt-5/qcoreapplication .html # applicationDirPath
Outras dicas
Nós 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 );
}
Então faça CoreDir :: pacote () filePath ( "../Resources");.
Quando você compila seu produto, têm o seu tentou definir o caminho de Resources
ser parente? Caso contrário, você pode recuperar o pacote principal, o URL do aplicativo da mesma e acrescentá-la aos recursos URL.
Há um manual para tudo, parece:)