Qt如何使QTreeWidget始终保持展开?

   

文章已更新,最新地址:http://www.fearlazy.com/index.php/post/122.html    

 

 

      有时候我们在使用树形控件实现项目分组功能时,不希望点击组名(即顶层Item)时收缩。 此时应该怎么办呢? 其实很简单,QTreeWidget的一个函数即可搞定,voidsetItemsExpandable ( bool enable ), 该函数来自QTreeView。设置是否允许用户展开和收缩Item。

 

    itemsExpandable : bool

his property holds whether the items are expandable by the user.

 

       因此要保持展开状态我们只需调用树形控件的两个接口就好了

     

    ui->treeWidget->setItemsExpandable(false);
    ui->treeWidget->expandAll();

 

 

 更多详细内容请查看:fearlazy.com

  • 7
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
QTreeWidget是继承自QTreeView的,因此可以使用QTreeView的方法来设置坐标。可以使用QTreeView的viewport()方法获取QTreeView的视口,然后使用QAbstractScrollArea的scrollTo()方法将视口滚动到指定的坐标。 示例代码如下: ```cpp QTreeWidget* treeWidget = new QTreeWidget(this); // 添加子项 QTreeWidgetItem* item1 = new QTreeWidgetItem(treeWidget, QStringList("Item 1")); QTreeWidgetItem* item2 = new QTreeWidgetItem(treeWidget, QStringList("Item 2")); QTreeWidgetItem* item3 = new QTreeWidgetItem(treeWidget, QStringList("Item 3")); // 设置坐标 QPoint item1Pos = item1->treeWidget()->viewport()->mapToGlobal(item1->treeWidget()->visualItemRect(item1).center()); item1Pos.setY(item1Pos.y() + item1->treeWidget()->header()->height()); item1Pos.setX(item1Pos.x() + item1->treeWidget()->frameGeometry().x()); QPoint item2Pos = item2->treeWidget()->viewport()->mapToGlobal(item2->treeWidget()->visualItemRect(item2).center()); item2Pos.setY(item2Pos.y() + item2->treeWidget()->header()->height()); item2Pos.setX(item2Pos.x() + item2->treeWidget()->frameGeometry().x()); QPoint item3Pos = item3->treeWidget()->viewport()->mapToGlobal(item3->treeWidget()->visualItemRect(item3).center()); item3Pos.setY(item3Pos.y() + item3->treeWidget()->header()->height()); item3Pos.setX(item3Pos.x() + item3->treeWidget()->frameGeometry().x()); // 滚动到指定坐标 treeWidget->viewport()->scrollTo(item2Pos); ``` 在上面的示例代码中,首先获取了每个子项在视口中的中心坐标,然后将它们转换为全局坐标。最后,使用QAbstractScrollArea的scrollTo()方法将视口滚动到指定的坐标(这里以item2的中心坐标为例)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fearlazy

打赏是不可能的

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值