需求:在将图片文件的打开方式设置成自己的软件之后,我想判定我打开的文件是在当前文件夹里面所有文件的第几张图
QApplication a(argc, argv);//argc表示打开程序的时候,程序获取到的参数个数
这行代码拿到的argv是char*[]类型的,
而该指针数组第一个元素argv[1]就是文件路径,
通过
QString strStartPath= QString::fromLocal8Bit(argv[1]);
转成QString之后显示的文件夹路径是以"\\"分隔的。
然后我通过QDir获取该图片所在文件夹下的所有图片文件
int nIndex = strStartPath.lastIndexOf("\\");//寻找‘\’符号在字符串中的id,注意:‘\’符号是转义字符,我在这边写了2个‘\’,但程序运行的时候只表示1个‘\’符号!!!
QString strFolder = strStartPath.mid(0,nIndex);//截取图片全路径中‘\’符号之前的所有字符串
nIndex = strStartPath.lastIndexOf('.');//寻找‘.’符号在字符串中的id
nIndex++;
int nLen = strStartPath.length()-nIndex;
QString strSuffix = strStartPath.right(nLen);//截取‘.’符号后面的字符串,这是为了获取文件后缀名
strSuffix = "*."+strSuffix;
QStringList nameFilters;
nameFilters << strSuffix;//为了过滤出和打开的文件相同后缀名的文件
QDir dir(strFolder);
QFileInfoList fileInfos = dir.entryInfoList(nameFilters, QDir::Files|QDir::Readable, QDir::Name);//获取文件夹中指定文件的全部路径
m_strPathList.clear();
foreach(QFileInfo fInfo,fileInfos)
{
m_strPathList.append(fInfo.filePath());
}
注意:m_strPathList里面的文件夹路径是以"/"分隔的! 所以在后续比较文件名的时候,需要先统一成“/”分隔,用到下面的代码:
strStartPath = strStartPath.replace("\\","/");
然后就可以通过
if(m_strPathList[i] == strStartPath)
{
//TODO:
}
来判断当前打开的文件是文件夹里面的第几个文件了。