1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
| #include <QApplication> #include <QWidget> #include <QTreeWidget> #include <QTreeWidgetItem> #include <QVBoxLayout> #include <QHeaderView> #include <QDebug>
void setupTreeWidgetDemo(QWidget *parent) { QVBoxLayout *layout = new QVBoxLayout(parent);
QTreeWidget *treeWidget = new QTreeWidget(parent);
treeWidget->setColumnCount(2); treeWidget->setHeaderLabels({"名称", "详情"});
treeWidget->header()->setSectionResizeMode(QHeaderView::Stretch);
QTreeWidgetItem *parentItemA = new QTreeWidgetItem(treeWidget); parentItemA->setText(0, "水果"); parentItemA->setIcon(0, parent->style()->standardIcon(QStyle::SP_DirIcon));
QTreeWidgetItem *childA1 = new QTreeWidgetItem(parentItemA); childA1->setText(0, "苹果"); childA1->setText(1, "红富士");
QTreeWidgetItem *childA2 = new QTreeWidgetItem(parentItemA); childA2->setText(0, "香蕉"); childA2->setText(1, "进口");
QTreeWidgetItem *parentItemB = new QTreeWidgetItem(treeWidget); parentItemB->setText(0, "蔬菜");
QTreeWidgetItem *childB1 = new QTreeWidgetItem(parentItemB); childB1->setText(0, "土豆"); childB1->setCheckState(0, Qt::Unchecked);
treeWidget->expandAll();
QObject::connect(treeWidget, &QTreeWidget::itemClicked, [](QTreeWidgetItem *item, int column) { qDebug() << "点击了节点:" << item->text(0) << " 所在列:" << column; });
layout->addWidget(treeWidget); }
int main(int argc, char *argv[]) { QApplication a(argc, argv); QWidget w; w.setWindowTitle("QTreeWidget 层次结构演示"); w.resize(400, 300); setupTreeWidgetDemo(&w); w.show(); return a.exec(); }
|