QTreeWidget的checkState/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::Unchecked | 0 | 未选中 |
| Qt::PartiallyChecked | 1 | 部分选中 |
| Qt::Checked | 2 | 选中 |
1.2 isSelected/setSelected
bool QTreeWidgetItem::isSelected() const;
void QTreeWidgetItem::setSelected(bool select);
2、功能用途
checkState/setCheckStatecheckState:用于获取QTreeWidgetItem的复选框状态。通过调用这个函数,你可以得知某个节点的复选框是处于未选中、部分选中还是选中状态,以便在程序逻辑中做出相应的处理。例如,实现全选、全不选功能,或者根据不同节点的选中状态进行数据统计等。setCheckState:用于设置QTreeWidgetItem的复选框状态。
isSelected/setSelectedisSelected:用于判断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 整个项会以系统默认的选中样式显示。通常在大多数系统主题下,该项的背景颜色会改变(比如变成蓝色),文字颜色也可能会改变以突出显示它是当前选中的项。

8287

被折叠的 条评论
为什么被折叠?



