linux和window下用資源管理器打開文件所在文件夾並選中文件

1.應用場景

軟件中需要定位到軟件打開的文件,例如視頻或者圖片。用戶可以方便的去通過軟件去找到系統的文件;

 

2.解決方法

window系統如果文件夾已經被打開,而且是最大化狀態,文件夾中文件特別多時無法選中文件,window系統會記住用戶最大化文件夾的狀態,導致無法定位到文件夾,這好像是window系統的缺陷,所以window系統在定位文件時,需要提前把window系統的最大化記錄刪除掉,使得打開文件夾時,是normal狀態;

 

void DetailShow::SlotOpenFile(QString strpicPath)
{
    //打開文件夾
    if (strpicPath != "")
    {
        QProcess process;
#ifdef WIN32
        //文件管理窗口具有記憶功能,如果是最大化,將無法滾動定位到文件,只有normal大小是纔會
        QSettings *programReg = NULL;
        programReg = new QSettings("HKEY_CURRENT_USER\\SOFTWARE\\Classes\\Local Settings\\Software\\Microsoft\\Windows\\Shell\\Bags\\AllFolders\\Shell\\", QSettings::NativeFormat);
        QStringList keylist = programReg->childKeys();
        for (int i = 0; i < keylist.size(); i++)
        {
            if (keylist[i].contains("MinPos") || keylist[i].contains("MaxPos") || keylist[i].contains("WinPos"))
            {
                programReg->remove(keylist[i]);
            }
        }
        strpicPath=strpicPath.replace("/", "\\");    //win32下替換斜槓
        process.startDetached("explorer", QStringList() << QString("/select,") << QString("%1").arg(strpicPath));
#else
        process.startDetached("peony", QStringList() << QString("-i") << QString("%1").arg(strpicPath));
#endif
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章