当前位置:首页 » 文件管理 » qt打开文件夹选择文件

qt打开文件夹选择文件

发布时间: 2025-02-23 00:07:24

① Qt 有没有文件夹对话框,用来选择文件夹用的

QUrl QFileDialog::getExistingDirectoryUrl(QWidget * parent = 0, const QStrir

② qt 打开文件的几种方式

在/usr 目录下有configurefile1.xml 文件,在程序的执行文件所在目录下有个test文件夹,test里有configurefile2.xml ;configurefile3.xml 一:工程里使用后缀为qrc的资源文件: 比如 资源文件里的内容为:<RCC<qresource <file alias="configfile1"/usr/configurefile1.xml</file <file alias="configfile2"test/configurefile2.xml</file <filetest/configurefile3.xml</file </qresource</RCC(其中test是在工程执行文件所在路径下的一个文件夹) 这样在程序中: QFile file1(":/configfile1"); QFile file2(":/configfile2"); QFile file3(":/test/configurefile3.xml"); file1.open(QFile::ReadOnly); file2.open(QFile::ReadOnly); file3.open(QFile::ReadOnly);上述三条打开文件的操作都可以成功打开对应文件, 但是如果在资源文件里 如果对某个文件的引用里加了alias别名的操作,比如QFile file2(":/test/configurefile2.xml"); file2.open(QFile::ReadOnly);将打开文件失败。 QT里:/表示对资源的引用,不是表示当前目录 二 使用相对路径 QFile file3("test/configurefile3.xml"); file3.open(QFile::ReadOnly);OPEN成功 三 使用绝对路径

③ Qt 如何在打开的文件夹中鼠标选中某文件

是在打开的文件夹中自动选中某文件吧?不需要用鼠标。

试试看这一段:


boolOpenFolderAndSelectFile(constchar*filePath)
{
#ifdefQ_OS_WIN

LPITEMIDLISTpidl;
LPCITEMIDLISTcpidl;
LPSHELLFOLDERpDesktopFolder;
ULONGchEaten;
HRESULThr;
WCHARwfilePath[MAX_PATH+1]={0};

::CoInitialize(NULL);

if(SUCCEEDED(SHGetDesktopFolder(&pDesktopFolder)))
{
//IShellFolder::ParseDisplayName要传入宽字节
LPWSTRlpWStr=NULL;
//#ifdef_UNICODE
//_tcscpy(wfilePath,strFilePath);
//lpWStr=wfilePath;
//#else
MultiByteToWideChar(CP_ACP,0,(LPCSTR)filePath,-1,wfilePath,MAX_PATH);
lpWStr=wfilePath;
//#endif

hr=pDesktopFolder->ParseDisplayName(NULL,0,lpWStr,&chEaten,&pidl,NULL);
if(FAILED(hr))
{
pDesktopFolder->Release();
::CoUninitialize();
returnFALSE;
}

cpidl=pidl;

//SHOpenFolderAndSelectItems是非公开的API函数,需要从shell32.dll获取
//该函数只有XP及以上的系统才支持,Win2000和98是不支持的,考虑到Win2000
//和98已经基本不用了,所以就不考虑了,如果后面要支持上述老的系统,则要
//添加额外的处理代码
HMODULEhShell32DLL=::LoadLibraryA("shell32.dll");
//ASSERT(hShell32DLL!=NULL);
if(hShell32DLL!=NULL)
{
typedefHRESULT(WINAPI*pSelFun)(LPCITEMIDLISTpidlFolder,UINTcidl,LPCITEMIDLIST*apidl,DWORDdwFlags);
pSelFunpFun=(pSelFun)::GetProcAddress(hShell32DLL,"SHOpenFolderAndSelectItems");
//ASSERT(pFun!=NULL);
if(pFun!=NULL)
{
hr=pFun(cpidl,0,NULL,0);//第二个参数cidl置为0,表示是选中文件
if(FAILED(hr))
{
::FreeLibrary(hShell32DLL);
pDesktopFolder->Release();
::CoUninitialize();
returnFALSE;
}
}

::FreeLibrary(hShell32DLL);
}
else
{
pDesktopFolder->Release();
::CoUninitialize();
returnFALSE;
}

//释放pDesktopFolder
pDesktopFolder->Release();
}
else
{
::CoUninitialize();
returnFALSE;
}

::CoUninitialize();
returnTRUE;

#else
QStringpathIn(filePath);
QStringListscriptArgs;
scriptArgs<<QLatin1String("-e")<<QString::fromLatin1("tellapplication"Finder"torevealPOSIXfile"%1"").arg(pathIn.replace('\','/'));
QProcess::execute(QLatin1String("/usr/bin/osascript"),scriptArgs);
scriptArgs.clear();
scriptArgs<<QLatin1String("-e")<<QLatin1String("tellapplication"Finder"toactivate");
QProcess::execute("/usr/bin/osascript",scriptArgs);
returntrue;
#endif
}
热点内容
柳叶刀访问 发布:2025-02-23 06:40:44 浏览:47
电脑b站怎么下载视频缓存 发布:2025-02-23 06:40:35 浏览:771
计算估算法 发布:2025-02-23 06:38:25 浏览:322
c语言待机 发布:2025-02-23 06:37:08 浏览:437
普通教师ftp 发布:2025-02-23 06:29:18 浏览:922
安卓系统软件运行在哪里 发布:2025-02-23 06:24:11 浏览:230
迅雷解压专家 发布:2025-02-23 06:14:01 浏览:461
安卓用户如何下载绝地求生国际服 发布:2025-02-23 06:14:00 浏览:901
话费充值分销源码 发布:2025-02-23 06:11:07 浏览:650
linux如何解压gz 发布:2025-02-23 06:11:03 浏览:899