2011-01-28 76 views
1

我试图将文件包含在我的Qt程序(用于symbian)中,并通过模拟器运行。没有文件被导出。我一直在用我的qmake文件中的代码是:如何在Symbian部署中包含文件以便可访问?

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运输资产是如此复杂。我的意思是 - 如果这种情况如此复杂,你还会如何发展某些事情。 :-( – 2011-01-29 05:13:05

+0

)如果你可以避开使用Qt SDK附带的模拟器,也就是说,如果你没有使用任何自定义的包装器来覆盖本地Symbian功能,请不要尝试使用标准的Symbian模拟器(又名epoc) - 它速度很慢, '模拟真实设备,使用模拟器在桌面上开发,然后在真实设备上测试 – chalup 2011-01-29 14:09:49

2

下的文件系统在Symbian OS上,所有的exe和dll文件都保存在/ sys/bin目录,并且每个应用程序都将其数据保存在/ private/APPUID目录中(其中APPUID是应用程序UID3)。将文件部署到“。”将文件部署到应用程序的私人目录中(在你的情况下,它将是/ private/e22a34fe,正如KevinD提到的,因为你的.pro文件中有“TARGET.UID3 = 0xe22a34fe”)。

要找出文件将在设备上部署的位置,请检查由qmake生成的appname_template.pkg。它的语法非常简单(如果有任何问题,您可以read the documentation)。

我不确定Symbian上QDir :: current()返回哪个目录,但文档指出QCoreApplication :: applicationDirPath()应该返回到应用程序的私有目录的路径。

0

如果你打算只用你的应用程序使用这些文件,那么你可以尝试使用Qt资源文件。

添加一个新的资源文件文件 - >新建文件 - >文件和类 - > Qt-> Qt资源文件。然后添加你需要的必要文件。所有的图像将被转换成等效的unicode文本或其他东西。 Deploying files with Qt application

相关问题