Qt TreeWidget 控件(一)

点击上方蓝字可直接关注公众号哦,方便下次阅读~

Qt 的List Widget、Tree Widget和Table Widget属于Qt Model/View中的简便类,之前文章介绍过Qt Model/View的三种级别分别是简便类、预定义模型以及自定义模型,其中自定义模型还没有介绍。对于这个简便类,还是有很多地方要介绍的。

顾名思义,说明Tree Widget可以将数据已“树形”的方式向大家显示,这样就涉及到了子节点、父节点等关系,不过本次给大家介绍的是简单的,只有同一层级的数据关系。

 

接下来以代码的形式向大家介绍:

 

1. 设置Tree Widget为两列,并设置名称

拖一个控件到Widget上,鼠标左键双击上方矩形框,则会弹出下面的设置界面,点击下方“+”标识,设置列的名称。

这里面要说明的是没找到在Designer里面设置列宽的方法,只能在代码里面设置。

2. 向Tree Widget添加Item

构造了一个QMap数据,通过Map向Tree Widget添加数据。

ui->treeWidget无法直接添加Item,只能通过添加addTopLevelItem,再通过addTopLevelItem添加节点的方式进行添加数据。(如有错误的地方希望大家不吝赐教)

QTreeWidgetItem *objListItem = new QTreeWidgetItem(QStringList()<<QString("Key")<<QString("Value"));    ui->treeWidget->addTopLevelItem(objListItem);
QMap<QString,int>::const_iterator it;
for(it = m_dataMap.begin(); it != m_dataMap.end(); it++) { QTreeWidgetItem *mItem = new QTreeWidgetItem( QStringList() << it.key() << QString::number(it.value()));
objListItem->addChild(mItem); }
ui->treeWidget->expandAll(); //TreeWidget全部展开

它长这个样子:

3. 添加双击Item的槽函数

当双击TreeWidget时会发出信号,我们可以使用槽来获取触发的数据。

Item没有currentCount的成员函数,对应的是childCount,槽函数信息汇总直接包含column信息。

自定义函数 getKeyString(item)是用来遍历Item节点信息的,下面介绍。

void Widget::slot_treeWidgetDoubleClicked(QTreeWidgetItem *item, int column){    qDebug() << "item->childCount" << item->childCount()             << "column" << column;
QString keyName = getKeyString(item); qDebug() << "content is" << keyName;}

该函数是递归调用,直到父节点为空退出。本次我们的Item只有自己一个,下次和大家分享有多层节点的情况。

通过treeData->text()来获得不同列的内容。

QString Widget::getKeyString(QTreeWidgetItem *treeData){    QString strKey;
if(treeData->parent() != NULL) { strKey = strKey.prepend(treeData->text(0));
qDebug() << "----------" << treeData->text(1); getKeyString(treeData->parent()); }
return strKey;}

双击第一行的效果:

学不可以已-----------have  to  learn!

每天进步一点点!

欢迎大家关注:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值