簡體   English   中英

Qt:QProcess結果與提示結果不匹配

[英]Qt: QProcess result doesn't match result at prompt

我正在嘗試從Qt執行以下命令:

explorer /select,C:\\Temp Folder\\temp.wav

這應該顯示在資源管理器窗口中選擇的文件temp.wav 從命令提示符運行時它可以正常工作。

但是,當我在Qt中嘗試以下內容時:

QProcess::startDetached(
            "explorer",
            QStringList("/select,C:\\Temp Folder\\temp.wav")
            );

它不起作用 - 它打開資源管理器,但把我放在“我的文檔”文件夾中。 如果我將文件夾重命名為沒有空格的文件夾(TempFolder),它可以正常工作。

我已經嘗試轉義文件夾名稱中的空格,在整個路徑上放置引號,以及許多其他組合沒有成功。 許多組合在cmd正常工作,但在通過QProcess::startDetached調用時似乎QProcess::startDetached

最令人困惑的部分是我試圖復制的代碼來自QtCreator源代碼,他們使用類似的東西在資源管理器窗口中打開一個文件。 他們成功地在路徑中打開帶有空格的文件,但我似乎無法重新創建它!

當你打這樣的電話時:

QProcess::startDetached("explorer",
                        QStringList("/select,C:\\Program Files\\7-Zip\\7z.exe"));

Qt將參數字符串轉換為:

資源管理器“/ select,C:\\ Program Files \\ 7-Zip \\ 7z.exe”

這不是打開資源管理器並選擇給定文件的有效選項。 發生這種情況,因為你的單個參數有空格,而Qt用引號轉義它。 要解決此問題,您需要進行以下調用:

QProcess::startDetached("explorer",
           (QStringList() << "/select," << "C:\\Program Files\\7-zip\\7z.exe"));

即傳遞兩個參數。 這將產生以下字符串:

explorer / select,“C:\\ Program Files \\ 7-Zip \\ 7z.exe”

這是有效的,將做的是預期的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM