我是QT的beginer,我試過一個動作添加到工具欄和我寫如下:Qt Creator中無法加載圖標
toolbar->addAction(QIcon("/icons/new.png"), "New File");
但是,圖像無法加載。這與我的調試路徑有關嗎?我可以看到按鈕,但沒有圖像。 這些代碼在test.cpp中,我的圖標文件夾與test.cpp位於相同路徑中
我是QT的beginer,我試過一個動作添加到工具欄和我寫如下:Qt Creator中無法加載圖標
toolbar->addAction(QIcon("/icons/new.png"), "New File");
但是,圖像無法加載。這與我的調試路徑有關嗎?我可以看到按鈕,但沒有圖像。 這些代碼在test.cpp中,我的圖標文件夾與test.cpp位於相同路徑中
路徑很有趣。
如果你在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
文件所在的位置。
希望有所幫助。
謝謝。這有很大幫助! – ivory
如果您使用的是Qt的資源,那麼你需要一個冒號:
toolbar->addAction(QIcon(":/icons/new.png"), "New File");`
,如果你不使用的資源,然後宥應該使用相對路徑。請記住,Qt Creator默認使用「在不同的地方構建」,因此您必須確保圖標部署在各自的目錄中。
什麼是您的操作系統?你是否在qt資源文件中指定了你的圖標? – elephant