在 C++ 中使用 QTreeWidget
默认展开所有项,你可以通过递归遍历树的每一个项并调用其 setExpanded(true)
方法来实现。以下是一个简单的示例,展示如何在 Qt 的 C++ 项目中展开所有 QTreeWidget
的项:
#include <QApplication>
#include <QTreeWidget>
#include <QTreeWidgetItem>
void expandAllItems(QTreeWidget *treeWidget) {
for (int i = 0; i < treeWidget->topLevelItemCount(); ++i) {
QTreeWidgetItem *item = treeWidget->topLevelItem(i);
item->setExpanded(true);
// 递归展开子项
expandChildItems(item);
}
}
void expandChildItems(QTreeWidgetItem *item) {
for (int i = 0; i < item->childCount(); ++i) {
QTreeWidgetItem *childItem = item->child(i);
childItem->setExpanded(true);
// 递归展开子项
expandChildItems(childItem);
}
}
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QTreeWidget treeWidget;
treeWidget.setHeaderLabel("My Tree");
// 创建一些树节点
QTreeWidgetItem *item1 = new QTreeWidgetItem(&treeWidget, QStringList() << "Item 1");
QTreeWidgetItem *item2 = new QTreeWidgetItem(&treeWidget, QStringList() << "Item 2");
QTreeWidgetItem *subItem1 = new QTreeWidgetItem(item1, QStringList() << "Sub Item 1");
QTreeWidgetItem *subItem2 = new QTreeWidgetItem(item1, QStringList() << "Sub Item 2");
// 添加到QTreeWidget中
treeWidget.addTopLevelItem(item1);
treeWidget.addTopLevelItem(item2);
// 默认展开所有项
expandAllItems(&treeWidget);
treeWidget.show();
return app.exec();
}
在这个代码中:
- 我们定义了
expandAllItems
函数,该函数接受一个指向QTreeWidget
的指针,并遍历其顶级项目。 - 对于每个顶级项目,我们将其设为展开状态,然后调用
expandChildItems
函数递归地展开其所有子项目。
当运行这个程序时,所有的树节点都会默认被展开。
内容由零声教学AI助手提供,问题来源于学员提问