• 5646阅读
  • 5回复

[提问]linux怎么根据几个分区挂载点得到文件夹信息 [复制链接]

上一主题 下一主题
离线zhangsong070
 

只看楼主 倒序阅读 楼主  发表于: 2012-05-29
linux下得到几个分区到挂载点,即路径后,怎么像win下面一样显示

setrootindex只能设置根目录,怎么将分区的路径挂载到子节点上?


实现: 使linux文件夹像window一样用分区的形式显示。
(已经得到了几个分区的路径)

离线zhangsong070

只看该作者 1楼 发表于: 2012-05-29
来人啊~
离线zhangsong070

只看该作者 2楼 发表于: 2012-05-29
     ui->setupUi(this);

    extern LogicDRIVE  LogicDriverList[];//结构体数组存储的是挂载点即分区的路径

    QDirModel *model = new QDirModel;

    model->setFilter(QDir::Dirs|  QDir::NoDotAndDotDot);

    ui->treeView->setModel(model);

   ui->treeView->setRootIndex(model->index(LogicDriverList[1].mountPoint));//第二个分区的路径
怎么才能够实现啊 ~~

离线zhangsong070

只看该作者 3楼 发表于: 2012-05-29
在线等啊~
离线zhangsong070

只看该作者 4楼 发表于: 2012-05-30
基本ok了
离线zhangsong070

只看该作者 5楼 发表于: 2012-05-30
void listFile(QTreeWidgetItem *parentWidgetItem, QFileInfo &parent)
{
    QDir dir;
    dir.setPath(parent.filePath());
    dir.setFilter(QDir::Files | QDir::Dirs | QDir::NoSymLinks);
    dir.setSorting(QDir::DirsFirst | QDir::Name);

    const QFileInfoList fileList = dir.entryInfoList();

    for (int i = 0; i < fileList.size(); i++)
    {
        QFileInfo fileInfo = fileList.at(i);
        QStringList fileColumn;
        fileColumn.append(fileInfo.fileName());

        if (fileInfo.fileName() == "." || fileInfo.fileName() == ".." ); // nothing

        else if(fileInfo.isDir())
        {
            QTreeWidgetItem *child = new QTreeWidgetItem(fileColumn);
            child->setIcon(0, QIcon("caterpillar_head.jpg"));
          //  child->setCheckState(0, Qt::Unchecked);
            parentWidgetItem->addChild(child);
            // select index of child
            listFile(child, fileInfo);
        }
        else
        {
            fileColumn.append(QString::number(fileInfo.size()));
            QTreeWidgetItem *child = new QTreeWidgetItem(fileColumn);
            child->setIcon(0, QIcon("momor_head.jpg"));
           // child->setCheckState(0, Qt::Unchecked);
            parentWidgetItem->addChild(child);
        }
    }
}


在调用
  // select index
     QFileInfo fileInfo(LogicDriverList[1].mountPoint);
     QStringList fileColumn;
     fileColumn.append(fileInfo.fileName());
     QTreeWidgetItem *dir = new QTreeWidgetItem(fileColumn);
     dir->setText(0,"d");
     dir->setIcon(0, qFileicon.icon(QFileIconProvider::Drive));

   //  dir->setCheckState(0, Qt::Checked); // 设定可核取的方块
     ui->treeWidget->addTopLevelItem(dir);

     // select index of child
     listFile(dir, fileInfo);



     QFileInfo fileInfo2(LogicDriverList[2].mountPoint);
     QStringList fileColumn2;
     fileColumn2.append(fileInfo2.fileName());
     QTreeWidgetItem *dir2 = new QTreeWidgetItem(fileColumn2);
     dir2->setText(0,"e");
     dir2->setIcon(0, qFileicon.icon(QFileIconProvider::Drive));

   //  dir->setCheckState(0, Qt::Checked); // 设定可核取的方块
     ui->treeWidget->addTopLevelItem(dir2);

     // select index of child
     listFile(dir2, fileInfo2);
快速回复
限100 字节
 
上一个 下一个