关联容器的应用(一)

来源:互联网 发布:plc200仿真软件 编辑:程序博客网 时间:2024/06/05 22:52
主要是用的是QMap的简单应用
QT关联容器根据key -> value映射, 元素根据key值大小排序,与插入顺序无关。

下面的例子是对一个文件进行排序。

QMap的Key会自动按升序排列。

首先,我们需要获得相应路径下的所有文件的列表:

相关的代码如下:

void Widget::on_pushButton_2_clicked(){    QString path=QFileDialog::getExistingDirectory(NULL, tr("get filepath"),"D:\\",QFileDialog::ShowDirsOnly);    QDir dir(path);    if(!dir.exists())  {return;}//文件不存,则返回false    m_fileList = dir.entryInfoList(QDir::Dirs|QDir::Files                               |QDir::Readable|QDir::Writable                               |QDir::Hidden|QDir::NoDotAndDotDot                               ,QDir::Name);}

将所有的获取路径下的所有的文件给导入到m_fileList(QFileInfoList)中,然后再通过下面的代码来进行排序打印输出:

void Widget::on_pushButton_clicked(){    if(m_fileInfo->size() <= 0)    {        return;    }    m_qlist.clear();    m_qmap.clear();    foreach (QFileInfo pfileinfo, m_fileList)    {        QString filename = pfileinfo.fileName();        // 获取文件名        m_qlist.push_back(filename);        QString qstrintomap = filename;        int nindex = qstrintomap.indexOf("(");        qstrintomap.remove(0,nindex+1);        nindex = qstrintomap.indexOf(")");        int nlen = qstrintomap.size();        qstrintomap = qstrintomap.remove(nindex,nlen - nindex);        int nkey = qstrintomap.toInt();        m_qmap.insert(nkey,filename);    }    for(int i = 0;i < m_qmap.size();++i)    {        qDebug() << m_qmap[i];    }}
文件夹中的文件:


打印输出的结果:


有兴趣的可以自己多测试下!!!

代码地址: 代码下载


原创粉丝点击