在我的程序中,我有一個按鈕用於在相對目錄中打開文本文件。我正在使用這樣的QDesktopServices:使用默認程序打開txt文件
QDesktopServices::openUrl(QUrl::fromLocalFile("file:///stuff/block_settings.txt"));
當按鈕被按下時,什麼也沒有發生。
該文件位於名爲「stuff」的文件夾中,該文件夾位於與我的.exe相同的位置。這是用於我所有其他任務的相同目錄。
我在做什麼錯?
謝謝。
在我的程序中,我有一個按鈕用於在相對目錄中打開文本文件。我正在使用這樣的QDesktopServices:使用默認程序打開txt文件
QDesktopServices::openUrl(QUrl::fromLocalFile("file:///stuff/block_settings.txt"));
當按鈕被按下時,什麼也沒有發生。
該文件位於名爲「stuff」的文件夾中,該文件夾位於與我的.exe相同的位置。這是用於我所有其他任務的相同目錄。
我在做什麼錯?
謝謝。
該文件的文件夾中名爲駐留在「東西」與我的.exe相同的位置。這是用於我所有其他任務的相同目錄。我究竟做錯了什麼?
似乎你的完整路徑是過度複雜。我會建議使用此這一翻譯:
QString QCoreApplication::applicationDirPath() [static]
返回包含應用程序可執行文件的目錄。例如,如果您已經在C:\ Qt目錄中安裝了Qt,並且運行了正則表達式示例,則此函數將返回「C:/ Qt/examples/tools/regexp」。
在Mac OS X上,這將指向實際包含可執行文件的目錄,該目錄可能位於應用程序包(如果應用程序已捆綁)中。
警告:在Linux上,此功能將嘗試從/ proc文件系統獲取路徑。如果失敗,它假定argv [0]包含可執行文件的絕對文件名。該函數還假定當前目錄尚未被應用程序改變。
所以,你會寫這樣的代碼:
QDesktopServices::openUrl(QString("%1/stuff/block_settings.txt")
.arg(QCoreApplication::applicationDirPath()));
有沒有請求失敗狀態的方式爲'QDesktopServices ::的OpenURL()'?調試的第一條規則是讀取並讀取錯誤消息。 – DavidO
我得到了ShellExecute'/stuff/block_settings.txt'失敗(錯誤2)false – mrg95
'QUrl :: fromLocalFile(「file:///stuff/block_settings.txt」)' - 這是prepending file://兩次。 'QUrl(「file:///stuff/block_settings.txt」)'或'QUrl :: fromLocalFile(「/ stuff/block_settings.txt」)' –