2011-01-28 1 views
1

Я попытался включить файлы в мою программу Qt (для symbian) и запускал ее через эмулятор. Файлы не экспортировались. Код, который я использую в моем файле QMAKE является:Как включить файлы в Symbian Deployment, чтобы он был доступен?

symbian { 
    TARGET.UID3 = 0xe22a34fe 
    # TARGET.CAPABILITY += 
    TARGET.EPOCSTACKSIZE = 0x14000 
    TARGET.EPOCHEAPSIZE = 0x020000 0x800000 

    addFiles.sources = 01.jpg 02.jpg 03.jpg 
    addFiles.path = . 
    DEPLOYMENT += addFiles 
} 

OTHER_FILES += \ 
    03.jpg \ 
    02.jpg \ 
    01.jpg 

Таким образом, вызов QDir :: entryInfoList() не покажет ни одного файла:

QDir dir = QDir::current(); 
dir.setFilter(QDir::Files | QDir::Hidden | QDir::NoSymLinks); 
QFileInfoList list = dir.entryInfoList(); 
// list is empty. 

я упускаю что-то в .pro файл?

ответ

2

Когда вы размещаете эти файлы, где вы ожидаете их размещения?

addFiles.path = . 

для меня неопределенный - это не текущая директория при развертывании файлов.

Укажите путь, который, как вы знаете, существует. Я, конечно, использовал приложение частный каталог для этой цели:

addFiles.path = \private\e22a34fe 

... то вы можете получить каталог файлов с

QApplication::applicationDirPath() 

Если вы работаете на эмуляторе, а также проверить если файлы развернуты. Если вы используете «настоящий» эмулятор Symbian (а не довольно ужасную версию QT), вы найдете файловую систему под epoc32 \ winscw

+0

Я бы предположил, что он помещен в тот же каталог, что и двоичный. Вот что значит "." предлагает, правильно? Вы упомянули '\ private \ e22a34fe' .. это всегда этот каталог? Вы также упоминали настоящий эмулятор Symbian, который я сейчас буду искать. Неудивительно, почему так сложно отправлять активы с Qt. Я имею в виду - как иначе вы будете развивать определенные вещи, если это так сложно. :-( –

+0

Если вы можете уйти с использованием симулятора, поставляемого с Qt SDK, то есть, если вы не используете какие-либо пользовательские оболочки поверх собственной функциональности Symbian, не пытайтесь использовать стандартный эмулятор Symbian (aka epoc) - он медленный, и он не работает 't emulate real device well. Разработайте на рабочем столе с помощью симулятора, а затем протестируйте его на реальном устройстве. – chalup

+0

Каталог \ private \ xxxx является каталогом данных приложений Symbian, где xxxx является UID вашего приложения (за вычетом «0x», конечно) , – KevinD

2

В ОС Symbian все файлы exe и dll хранятся в/sys/bin каталог, и каждое приложение сохраняет свои данные в каталоге/private/APPUID (где APPUID - это приложение UID3). Развертывание файлов на "." будет разворачивать файлы в частный каталог приложения (в вашем случае это будет/private/e22a34fe, как упоминалось KevinD, потому что у вас есть «TARGET.UID3 = 0xe22a34fe» в вашем файле .pro).

Чтобы узнать, где файлы будут развернуты на устройстве, проверьте appname_template.pkg, сгенерированный qmake. Синтаксис довольно прост (и в случае каких-либо проблем вы можете read the documentation).

Я не уверен, какая директория возвращается QDir :: current() на Symbian, но в документации указано, что QCoreApplication :: applicationDirPath() должен возвращать путь к частному директорию приложения.

0

Если вы собираетесь использовать эти файлы только с вашим приложением, вы можете попробовать использовать файл ресурсов Qt.

Чтобы добавить новый файл ресурсов File-> New File-> Files and Classes-> Qt-> Qt Resource file. Затем добавьте необходимые файлы. Все изображения будут преобразованы в эквивалентный текст Unicode или что-то в этом роде. Deploying files with Qt application

+0

Это хорошо знать для новичков, так как ресурсы Qt очень просты в использовании, но, пожалуйста, ради ваших нервов помните: ресурсы Qt ** доступны только для чтения **, при развертывании файлов в соответствии с правилами PKG читать-писать им. – quetzalcoatl

Смежные вопросы