2011-01-28 70 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

相關問題