Qt编程24:QTreeWidget简单使用

//构建tree对象
    m_tree = new QTreeWidget(this);
    m_tree->setHeaderLabels(QStringList()<<"名称"<<"大小"<<"修改日期");
    //设置最后一行填充
    m_tree->header()->setStretchLastSection(true);
    //设置表头文字颜色
    m_tree->headerItem()->setTextColor(0,QColor(Qt::gray));
    m_tree->headerItem()->setTextColor(1,QColor(Qt::gray));
    m_tree->headerItem()->setTextColor(2,QColor(Qt::gray));

    //设置表头文字字体
    m_tree->header()->setFont(QFont("黑体",12,QFont::Bold));

    //设置表格可以排序
    m_tree->setSortingEnabled(true);

    //设置列宽
    m_tree->setColumnWidth(0,200);
    m_tree->setColumnWidth(1,100);
    m_tree->setColumnWidth(2,300);

    //设置表头字段是否可拖动
    m_tree->header()->setSectionsMovable(false);

    //设置文字隐藏模式
    m_tree->setTextElideMode(Qt::ElideRight);


    //设置调色板
    QPalette pal;
    //设置行交替颜色
    pal.setColor(QPalette::AlternateBase,QColor(0, 220,220));
    //设置文字颜色
    pal.setColor(QPalette::Text,QColor(Qt::red));
    m_tree->setPalette(pal);
    //设置行交替颜色
    //m_tree->setAlternatingRowColors(true);
    ui->verticalLayout->addWidget(m_tree);

    //将
    QFileInfo fInfo("G:\\");
    QFileIconProvider iconp;
    QIcon icon = iconp.icon(fInfo);

    if(fInfo.isRoot())
    {

    }
    topItem = new QTreeWidgetItem();
    topItem->setText(0,"G:\\");
    topItem->setIcon(0,icon);
    topItem->setText(1,"");
    topItem->setText(2,fInfo.lastModified().toString("yyyy-MM-dd hh:mm:ss zzz"));

    m_tree->addTopLevelItem(topItem);
    //遍历目录将文件属性加入QTreeWidget

    traverDir("G:\\",topItem);

 

//遍历目录函数(这种方式不可取,在文件多的时候太慢,应该采用打开文件夹得时候去读取信息,可能快一些)

//一次将文件遍历插入QtreeWidget
void Widget::traverDir(QString dirPath,QTreeWidgetItem *&tmpItem)
{
    QDir dir(dirPath);
    foreach(QFileInfo fInfo,dir.entryInfoList())
    {
        if(fInfo.fileName().startsWith("."))
        {
            continue;
        }

        if(fInfo.isFile())
        {
            QString fileName = fInfo.fileName();
            QFileIconProvider iconp;
            QIcon icon = iconp.icon(fInfo);

            QTreeWidgetItem *item = new QTreeWidgetItem();
            item->setText(0,fileName);
            item->setIcon(0,icon);
            item->setText(1,QString::number(fInfo.size(),10));
            item->setText(2,fInfo.lastModified().toString("yyyy-MM-dd hh:mm:ss zzz"));

            tmpItem->addChild(item);

        }
        else if(fInfo.isDir())
        {
            QString fileName = fInfo.fileName();
            QFileIconProvider iconp;
            QIcon icon = iconp.icon(fInfo);

            QTreeWidgetItem *item = new QTreeWidgetItem();
            item->setText(0,fileName);
            item->setIcon(0,icon);
            item->setText(1,"");
            item->setText(2,fInfo.lastModified().toString("yyyy-MM-dd hh:mm:ss zzz"));

            item->setCheckState(0,Qt::Unchecked);
            tmpItem->addChild(item);

            traverDir(fInfo.filePath(),item);
        }
    }
}

效果:


 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值