2014-03-05 75 views
0

我是QT的beginer,我試過一個動作添加到工具欄和我寫如下:Qt Creator中無法加載圖標

toolbar->addAction(QIcon("/icons/new.png"), "New File"); 

但是,圖像無法加載。這與我的調試路徑有關嗎?我可以看到按鈕,但沒有圖像。 這些代碼在test.cpp中,我的圖標文件夾與test.cpp位於相同路徑中

+0

什麼是您的操作系統?你是否在qt資源文件中指定了你的圖標? – elephant

回答

2

路徑很有趣。

如果你在linux上,你只需指定驅動器的根目錄有一個名爲icons的文件夾,並在其中有一個名爲new.png的文件。

如果您在網站上使用這種類型的路徑,除了域名和子域名之外,它會切斷左側的所有內容。

example.com/path/to/some/folder/index.html,進程鏈接到/icons/new.png,你最終在:example.com/icons/new.png

正確處理路徑的最佳方法是對相對路徑使用通用符號(在大多數情況下......在某些情況下,絕對路徑有意義)。

./表示我目前在工作目錄中的文件夾。

../表示上方的文件夾。

領先的/表示Unix系統上可能的最高文件夾或根文件夾。它也類似於爲文件提供絕對路徑。

任何領導.../意味着相同./,或從工作目錄。

而且還有更多的規則。查看維基條目:

http://en.wikipedia.org/wiki/Path_(computing)

在Qt也有資源系統,嵌入文件到exe文件本身,可以給你在你的程序更難對變化的圖像或圖形。

的符號訪問此是:

:/指qresource系統的根目錄。

如果你確定有一個使用反斜槓的理由,一定要轉義它。通常情況下,Qt會採用任何反斜槓輸入並將其轉換爲動態的正斜槓。

所以要仔細檢查該文件是存在的,使用之後if(!file.exists()){ qDebug() << "File is not found!" << file.fileName(); }

QFile file("icons/new.png");有時候,我發現它的幫助,看看我的程序是,當發生這種情況。無論是使用system("dir");qDebug() << QDir::currentPath();

http://doc.qt.io/qt-5.5/qdir.html#currentPath

你也可以看到你的初始工作目錄是在你的項目屬性尋找下Qt Creator中的項目是什麼:

Projects (tab) > Run (tab) > Run > Working directory: 

通常它是根您的源代碼在哪裏以及您的.pro文件所在的位置。

希望有所幫助。

+0

謝謝。這有很大幫助! – ivory

0

如果您使用的是Qt的資源,那麼你需要一個冒號:

toolbar->addAction(QIcon(":/icons/new.png"), "New File");` 

,如果你不使用的資源,然後宥應該使用相對路徑。請記住,Qt Creator默認使用「在不同的地方構建」,因此您必須確保圖標部署在各自的目錄中。