Come riferimento cartella Risorse nel codice
Domanda
Sono porting di un C ++ Qt applicazioni da Windows a OS X e non posso avvolgere la mia testa intorno al concetto .app fascio. Spero che qualcuno possa aiutarmi a capire.
Il mio eseguibile vive qui: MyProgram.app/Content/MacOS/MyProgram.exe
La mia cartella delle risorse vive qui: MyProgram.app/Content/Resources /
Nel mio codice io uso un percorso relativo per fare riferimento elementi nella cartella delle risorse:
"../ Risorse / something.png"
Questa grande opera se apro il pacchetto .app e eseguire direttamente il file exe.
Ma questo non è il modo il fascio .app è destinato a lavorare. L'utente dovrebbe cliccare sul fascio .app nel Finder per eseguire il programma. Ma in questo caso il mio percorso relativo non funziona più, e questo è quello che non capisco.
Qualcuno capire il mio problema e come posso risolvere il problema?
Soluzione
QApplication::applicationDirPath()
http://doc.qt.io/qt-5/qcoreapplication .html # applicationDirPath
Altri suggerimenti
Usiamo:
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 );
}
Quindi, fare CoreDir :: fascio () filePath ( ""); ../Resources.
Quando si compila il vostro prodotto, hanno provato la vostra impostazione del percorso di Resources
di essere parente? In caso contrario, è possibile recuperare il fascio principale, l'URL dell'app stessa e aggiungerlo all'URL Risorse.
Bundle Guida alla programmazione
C'è un manuale per ogni cosa, a quanto pare:)