1.
#define SYSTEM_DIR_LB_FILE 0x0B000000 //录波目录
QString filepath_dat=QFileDialog::getOpenFileName(this,tr("Open Image"),DirMgr::GetSysDirAllEn_Name(SYSTEM_DIR_LB_FILE), tr("data(*.dat);;all(*.*)"));
2.
XString DirMgr::GetSysDirAllEn_Name(XUINT dir_val) //dir_val = SYSTEM_DIR_LB_FILE
{
if (IS_INIT == XFALSE)
{
init(false);
}
XString strPath=QCoreApplication::applicationDirPath();
XString dir=GetSysDirEn_Name(dir_val);
XString alldir="";
QStringList splitdir=strPath.split("/");
XINT i=0;
for(i;i<splitdir.count();i++)
{
XCHAR root_name[100];
memcpy(root_name,(XCHAR*)P_SYSTEM_DIR_EN_STR[0],SYSTEM_DIR_NSA3000T_STR_MAXCOUNT);
if(splitdir.at(i)==QStringEx::fromLocal8Bit(root_name))
{
break;
}
}
for(XINT j=0;j<i;j++)
alldir+=splitdir.at(j)+"/";
alldir+=dir;
return alldir;
}
3
XString DirMgr::GetSysDirEn_Name(XUINT dir_val)
{
if (IS_INIT == XFALSE)
{
init(false);
}
XString en_name=getdir(dir_val);
if(dir_val==SYSTEM_DIR_BIN||dir_val==SYSTEM_DIR_APP||dir_val==SYSTEM_DIR_COM||dir_val==SYSTEM_DIR_L_ZIP)
{
#ifdef CUR_RUN_SYS_WINDOWS_VS2008
en_name=en_name+"/win";
#endif
#ifdef CUR_RUN_SYS_LINUX_QT
en_name=en_name+"/lnx";
#endif
}
else
{
#ifdef CUR_RUN_SYS_WINDOWS_VS2008
en_name=en_name.replace("lnx","win");
#endif
#ifdef CUR_RUN_SYS_LINUX_QT
en_name=en_name.replace("win","lnx");
#endif
}
QStringList enname=en_name.split("/");
en_name="";
XINT i=0;
for(i;i<enname.count();i++)
{
XCHAR root_name[100];
memcpy(root_name,(XCHAR*)P_SYSTEM_DIR_EN_STR[0],SYSTEM_DIR_NSA3000T_STR_MAXCOUNT);
if(enname.at(i)==QStringEx::fromLocal8Bit(root_name))
break;
}
for(int j=i;j<enname.count();j++)
en_name=en_name+enname.at(j)+"/";
return en_name;
}
总结:
以上是打开选择窗口直接定位到某个文件夹,如果不需要,第一部直接这样:
QString filepath_dat=QFileDialog::getOpenFileName(this,tr("Open Image"),“ ”, tr("data(*.dat);;all(*.*)"));
即可,打开后可能是我的桌面,可能是我的文档