2013-01-08 43 views
0

我在Ubuntu 12.04上用Qt Creator做了一個非常簡單的應用程序。該應用程序讀取一個xml文件並顯示一對圖像。但是,當我嘗試通過雙擊另一臺計算機上的圖標(運行Lubuntu)來啓動應用程序時,圖像未顯示,並且不讀取xml文件。通過鍵入./App從應用程序啓動時,應用程序可以正常工作。如果從命令行啓動,Qt應用程序只能正常工作

它爲什麼表現如此,我該如何解決它?

編輯:即讀取XML的方法:

QDomDocument doc("document"); 
QString path = "datastorage.xml"; // xml is in same directory as the executable 
QFile xmlFile(path); 

if (!xmlFile.open(QIODevice::ReadOnly)) 
    throw QString("Error with XML: Could not open file " + path); 
if (!doc.setContent(&xmlFile)) { 
    xmlFile.close(); 
    throw QString("Error with XML: Could not set QDomDocument content from " + path); 
} 
xmlFile.close(); 
QDomElement root = doc.documentElement(); 
return root; 
+1

似乎是一個路徑問題。你可以在你打開xml文件的地方發佈代碼嗎? – sgibb

+0

你是什麼意思「我嘗試從另一臺機器上的桌面可執行文件啓動應用程序」? –

+0

@KalebPederson:我將這些文件移動到另一臺計算機上,並試圖通過雙擊應用程序圖標來啓動它。所以這不是一個桌面快捷方式,我選擇我的話很差。 – hannu40k

回答

4

只要您使用相對路徑來讀取文件,並將這些路徑總是相對於「工作目錄」。如果您從控制檯啓動您的應用程序,並且所有必需的文件都在應用程序目錄中,那麼一切正常。從桌面工作目錄啓動時可能會有所不同。只需將QCoreApplication :: applicationDirPath()添加到您正在使用的所有路徑即可。

+0

我試了一下。 – hannu40k

+0

這樣做的竅門,但我沒有看到相對路徑如何將它搞砸,因爲它實際上並非從桌面啓動(我澄清了有關問題),而是從應用程序目錄中的圖標開始。工作,沒有更多。 – hannu40k

+0

考慮使用[resource](http://doc.qt.digia.com/qt/resources.html)文件,而不是自己創建路徑。 – Mitch

相關問題