【QT】QTreeWidgetItem的checkState/setCheckState函数和isSelected/setSelected函数


  QTreeWidgetcheckState/setCheckState函数和isSelected/setSelected这两组函数有着不同的用途,下面具体说明:

1、函数原型

1.1 checkState/setCheckState
Qt::CheckState QTreeWidgetItem::checkState(int column) const;
void QTreeWidgetItem::setCheckState(int column, Qt::CheckState state);

Qt::CheckState的枚举值:

常量描述
Qt::Unchecked0未选中
Qt::PartiallyChecked1部分选中
Qt::Checked2选中
1.2 isSelected/setSelected
bool QTreeWidgetItem::isSelected() const;
void QTreeWidgetItem::setSelected(bool select);

2、功能用途

  • checkState/setCheckState
    • checkState:用于获取QTreeWidgetItem的复选框状态。通过调用这个函数,你可以得知某个节点的复选框是处于未选中、部分选中还是选中状态,以便在程序逻辑中做出相应的处理。例如,实现全选、全不选功能,或者根据不同节点的选中状态进行数据统计等。
    • setCheckState:用于设置QTreeWidgetItem的复选框状态。
  • isSelected/setSelected
    • isSelected:用于判断QTreeWidgetItem是否被选中。这里的 “选中” 通常指节点在视觉上被突出显示,表示用户当前选择了该节点,与节点的复选框状态无关。主要用于确定用户的操作焦点,以便在用户对某个节点进行选择后,执行与该节点相关的特定操作,如显示节点详细信息、进行节点编辑等。
    • setSelected:用于设置QTreeWidgetItem的选中状态。

3、示例

代码:

#include <QApplication>
#include <QTreeWidget>
#include <QTreeWidgetItem>
#include <QVBoxLayout>
#include <QWidget>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QWidget window;
    QVBoxLayout layout(&window);

    QTreeWidget treeWidget;
    treeWidget.setColumnCount(1);
    treeWidget.setHeaderLabels(QStringList() << "Items");

    // 创建父项
    QTreeWidgetItem *parentItem = new QTreeWidgetItem(&treeWidget, QStringList() << "Parent");
    // 创建子项1并设置复选框为选中状态
    QTreeWidgetItem *childItem1 = new QTreeWidgetItem(parentItem, QStringList() << "Child 1");
    childItem1->setCheckState(0, Qt::Checked);
    // 创建子项2并设置为选中状态
    QTreeWidgetItem *childItem2 = new QTreeWidgetItem(parentItem, QStringList() << "Child 2");
    childItem2->setSelected(true);

    layout.addWidget(&treeWidget);
    window.show();

    return a.exec();
}

运行效果:
在这里插入图片描述

  • 复选框状态:Child 1 前面会显示一个被勾选的复选框,这是通过childItem1->setCheckState(0, Qt::Checked);设置的。你会看到一个小方块,里面有一个对勾,表示该项被选中。
  • 选中状态:Child 2 整个项会以系统默认的选中样式显示。通常在大多数系统主题下,该项的背景颜色会改变(比如变成蓝色),文字颜色也可能会改变以突出显示它是当前选中的项。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

yanzhyan

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值