Как ссылаться на папку ресурсов в коде

Я портирую приложение C ++ Qt из Windows в OSX и не могу осмыслить концепцию пакета .app. Надеюсь, кто-нибудь поможет мне разобраться.

Мой исполняемый файл находится здесь: MyProgram.app/Content/MacOS/MyProgram.exe

Моя папка ресурсов находится здесь: MyProgram.app/Content/Resources/

В моем коде я использую относительный путь для ссылки на элементы в папке ресурсов:

"../Resources/something.png"

Это отлично работает, если я открываю пакет .app и напрямую запускаю .exe.

Но пакет .app должен работать не так. Пользователь должен щелкнуть пакет .app в Finder, чтобы запустить программу. Но в этом случае мой относительный путь больше не работает, и я этого не понимаю.

Кто-нибудь понимает мою проблему и как я могу ее исправить?


person JimDaniel    schedule 21.02.2009    source источник
comment
Ответ на этот stackoverflow.com / questions / 516200 / сделает это за вас.   -  person Logan Capaldo    schedule 21.02.2009


Ответы (4)


QApplication::applicationDirPath()

http://doc.qt.io/qt-5/qcoreapplication.html#applicationDirPath

person Reed Hedges    schedule 22.02.2009
comment
Мне больше всего нравится это решение, поскольку оно не зависит от кода платформы. Спасибо! - person JimDaniel; 23.02.2009
comment
Или QCoreApplication :: applicationDirPath () - работает с приложениями Qt, не основанными на графическом интерфейсе. - person Nick; 15.07.2009

Мы используем:

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 );
}

То же самое и с CoreDir :: bundle (). FilePath ("../Resources");

person mxcl    schedule 23.02.2009

При компиляции продукта пытались ли вы установить относительный путь Resources? В противном случае вы можете получить основной пакет, URL-адрес его приложения и добавить его к URL-адресу ресурсов.

person dirkgently    schedule 21.02.2009

Руководство по программированию пакетов

На все есть мануал :)

person Matt    schedule 21.02.2009
comment
К сожалению, ваша ссылка не работает, и я не смог найти страницу с таким названием на apple.com. - person Tobias; 23.04.2014
comment
Спасибо, обновили его до практически аналогичного содержания в своих новых руководствах. - person Matt; 23.05.2014