双击文件打开自己程序时获取的被打开文件路径和QDir获取的文件路径的分隔符不同!切记!

需求:在将图片文件的打开方式设置成自己的软件之后,我想判定我打开的文件是在当前文件夹里面所有文件的第几张图

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

来判断当前打开的文件是文件夹里面的第几个文件了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GreenHandBruce

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值