QT 打开文件选择窗口

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(*.*)"));

即可,打开后可能是我的桌面,可能是我的文档

展开阅读全文

没有更多推荐了,返回首页