Qt走起 - Qt代码示例 - Qt Widgets程序
QTreeWidget遍历所有节点和获取节点直接子节点数等
效果图:

mainwindow.h代码:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QTreeWidget>
#include <QString>
#include <QLabel>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
Q_OBJECT

public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();

private:
Ui::MainWindow *ui;
QTreeWidget HtmdTreeWidget;
QTreeWidgetItem HtmdTreeWidgetItems [10];
QLabel HtmdItemCountLabel,HtmdItemCountLabelOfFruit;

};
#endif // MAINWINDOW_H
mainwindow.cpp代码:
#include "mainwindow.h"
#include "./ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);

setWindowTitle("QTreeWidget示例 - 何问起");

HtmdTreeWidget.move(10,20);
HtmdTreeWidget.resize(200,230);
HtmdTreeWidget.setParent(this);
HtmdTreeWidget.setColumnCount(1);// 设置列 数量 为 1
HtmdTreeWidget.setHeaderHidden(true);//隐藏头部


HtmdTreeWidgetItems[0].setText(0,"水果");// 设置节点文本, by 何问起
HtmdTreeWidget.addTopLevelItem(&HtmdTreeWidgetItems[0]);//添加顶级节点

HtmdTreeWidgetItems[1].setText(0,"苹果");
HtmdTreeWidgetItems[0].addChild(&HtmdTreeWidgetItems[1]);//添加子节点

HtmdTreeWidgetItems[2].setText(0,"红富士");
HtmdTreeWidgetItems[1].addChild(&HtmdTreeWidgetItems[2]);

HtmdTreeWidgetItems[3].setText(0,"黄元帅");
HtmdTreeWidgetItems[1].addChild(&HtmdTreeWidgetItems[3]);

HtmdTreeWidgetItems[4].setText(0,"花牛");
HtmdTreeWidgetItems[1].addChild(&HtmdTreeWidgetItems[4]);

HtmdTreeWidgetItems[5].setText(0,"葡萄");
HtmdTreeWidgetItems[0].addChild(&HtmdTreeWidgetItems[5]);

HtmdTreeWidgetItems[6].setText(0,"黑葡萄");
HtmdTreeWidgetItems[5].addChild(&HtmdTreeWidgetItems[6]);

HtmdTreeWidgetItems[7].setText(0,"青葡萄");
HtmdTreeWidgetItems[5].addChild(&HtmdTreeWidgetItems[7]);

HtmdTreeWidgetItems[8].setText(0,"蔬菜");
HtmdTreeWidget.addTopLevelItem(&HtmdTreeWidgetItems[8]);
//HtmdTreeWidgetItems[8].setSelected(true);//选中该节点,高亮显示

HtmdTreeWidgetItems[9].setText(0,"白菜");
HtmdTreeWidgetItems[8].addChild(&HtmdTreeWidgetItems[9]);


int m_count=0;
//遍历节点,统计节点数
QTreeWidgetItemIterator it(&HtmdTreeWidget);
while (*it) {
m_count++;
if((*it)->text(0)=="花牛")
{
(*it)->setCheckState(0,Qt::Checked);
}
++it;
}

HtmdItemCountLabel.setParent(this);
HtmdItemCountLabel.move(220,0);//设置某些值,可能会影响 一些节点无法的展开
HtmdItemCountLabel.setText("通过遍历计算,一共有 "+QString::number(m_count)+" 个节点");

int m_topLevelItemCount=HtmdTreeWidget.topLevelItemCount();//顶层节点数量
for(int nIndex = 0; nIndex != m_topLevelItemCount; nIndex++)
{
// 开始遍历顶层节点
HtmdTreeWidget.topLevelItem(nIndex)->setBackground(0,Qt::Dense7Pattern);//设置背景
}

HtmdItemCountLabelOfFruit.setParent(this);
HtmdItemCountLabelOfFruit.setText("水果节点的直接子节点数:"+QString::number(HtmdTreeWidgetItems[0].childCount()));
HtmdItemCountLabelOfFruit.move(220,50);

}

MainWindow::~MainWindow()
{
delete ui;
}

收藏 列表

评论:

导航