Question

Je suis un portage c ++ application Qt de Windows à Mac OS X et ne peut pas envelopper la tête autour du concept de faisceau de .app. J'espère que quelqu'un peut me aider à comprendre.

vit mon exécutable ici: MyProgram.app/Content/MacOS/MyProgram.exe

Mon dossier ressource vit ici: MyProgram.app/Content/Resources /

Dans mon code, j'utilise un chemin relatif pour référencer des éléments dans le dossier des ressources:

"../ Ressources / something.png"

Cela fonctionne très bien si j'ouvre le paquet .app et exécutez le .exe directement.

Mais ce n'est pas comment le faisceau de .app est censé fonctionner. L'utilisateur est censé cliquer sur le paquet .app dans le Finder pour exécuter le programme. Mais dans ce cas, mon chemin relatif ne fonctionne plus, et ce que je ne comprends pas.

Quelqu'un comprend mon problème et comment je peux résoudre ce problème?

Était-ce utile?

La solution

Autres conseils

Nous utilisons:

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 );
}
filePath ( "../Resources")

faire CoreDir :: bundle ();.

Lorsque vous compilez votre produit, vous avez votre essayé de placer le chemin de Resources être parent? Dans le cas contraire, vous pouvez récupérer le faisceau principal, l'URL de l'application de celle-ci et l'ajouter à l'URL des ressources.

Bundle Guide de programmation

Il y a un manuel pour tout, il semble:)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top