QTreeWidget简单用法

1、void QTreeWidget::setHeaderLabels(const QStringList & labels)

设置表头,QStringList有几项,表头就有多少列

2、void QHeaderView::setSortIndicatorShown(bool show)

This property holds whether the sort indicator is shown.
By default, this property is false.(这里有误,经测试默认应该是true)

译:设置表头是否显示排序指示符,SortIndicator为水平标题栏文字旁边的小三角符号

如果要显示排序指示符,那么这个函数没必要调用

3、void QHeaderView::setSortIndicator(int logicalIndex, Qt::SortOrder order)

Sets the sort indicator for the section specified by the given logicalIndex in the direction specified by order, and removes the sort indicator from any other section that was showing it.

译:为指定的 logicalIndex字段设置排序指示符(如果是升序,就是朝上的小三角;如果是降序,就是朝下的小三角)

同时在其他的字段位置将不显示排序指示符(其实任何情况下只能在一个字段位置处显示排序指示符)。

这只是一个初始化的设置,后期用户的操作可以改变这种设置。

4、void QTreeWidget::addTopLevelItem(QTreeWidgetItem * item)

为QTreeWdiget增加顶级项目

5、void QTreeWidgetItem::addChild(QTreeWidgetItem * child)

为顶级项目增加子项目

6、void QTreeWidget::setItemWidget(QTreeWidgetItem * item, int column, QWidget * widget)

将widget控件显示到item的column列里

下面给出一些简单实例代码:


#include <QTreeWidget>
#include <QTreeWidgetItem>
#include <QStringList>
#include <QSpinBox>

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);

    QTreeWidget* treeWidget = new QTreeWidget(this);
    treeWidget->setWindowTitle("QTreeWidget");
    //设定头项名称
    treeWidget->setHeaderLabels(QStringList()<<"Key"<<"Value");
    
    treeWidget->setSortingEnabled(true);
    //treeWidget->header()->setSortIndicatorShown(true);//设置排序指示符是否显示
    treeWidget->header()->setSortIndicator(0,Qt::AscendingOrder);//为第0列设置排序指示符为升序

    //设定各个项
    QTreeWidgetItem* A = new QTreeWidgetItem(QStringList()<<"A");
    A->setIcon(0, QIcon(":/images/a.png"));//资源文件前缀为/
    A->setCheckState(0, Qt::Checked);

    QTreeWidgetItem* B = new QTreeWidgetItem(QStringList()<<"B");
    B->setIcon(0, QIcon(":/images/b.png"));
    B->setCheckState(0, Qt::Checked);

    QTreeWidgetItem* C = new QTreeWidgetItem(QStringList()<<"C");
    C->setIcon(0, QIcon(":/images/c.png"));
    C->setCheckState(0, Qt::Checked);

    treeWidget->addTopLevelItem(A);//添加顶级项A
    treeWidget->addTopLevelItem(B);//添加顶级项B
    treeWidget->addTopLevelItem(C);//添加顶级项C

    for(int i=0; i<3; ++i)//给A添加子项目
    {
        QStringList columItemList;
        QTreeWidgetItem *child;
        QString key, value;
        key += "a" + QString::number(i);
        value += QString::number(i);
        columItemList<<key<<value;
        child = new QTreeWidgetItem(columItemList);
        A->addChild(child);
        treeWidget->setItemWidget(child,1,new QSpinBox);//将QSpinBox显示到child项的第一列里
    }

    treeWidget->show();
}
treeWidget->setItemWidget(child,1,new QSpinBox)
这句代码调用之后会遮住value列的值,可以注释掉

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值