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 } }