(28) 模型视图架构里的树表窗体视图 QTreeWidget 的代码使用范例,举一个小例子

(1) 我们以此程序为例,学习树形视图的使用

在这里插入图片描述

++汉语引起阅读性变差, 无法理解汉字的 unicode 编码 。换这个得了 :

在这里插入图片描述

(2) 这是本程序的 ui_mainwindow . h 头文件,最标准的,编译器生成的 UI 代码,以此学习树表视图的成员函数的使用 :

#ifndef UI_MAINWINDOW_H
#define UI_MAINWINDOW_H

#include <QtCore/QVariant>
#include <QtWidgets/QApplication>
#include <QtWidgets/QHeaderView>
#include <QtWidgets/QMainWindow>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QTreeWidget>
#include <QtWidgets/QVBoxLayout>
#include <QtWidgets/QWidget>

QT_BEGIN_NAMESPACE

class Ui_MainWindow
{
public:
    QWidget     * centralwidget   ;     //这没有采用 QWidget,而是 QMainWindow,
    QVBoxLayout * verticalLayout_2;     //所以布局麻烦了一些。
    QPushButton * pushButton;
    QTreeWidget * treeWidget;

    void setupUi(QMainWindow *MainWindow)
    {
        if (MainWindow->objectName().isEmpty())
            MainWindow->setObjectName(QString::fromUtf8("MainWindow"));
        MainWindow->resize(229, 253);   //成成主窗体,并采用垂直布局
        centralwidget = new QWidget(MainWindow);
        centralwidget->setObjectName(QString::fromUtf8("centralwidget"));
        verticalLayout_2 = new QVBoxLayout(centralwidget);
        verticalLayout_2->setObjectName(QString::fromUtf8("verticalLayout_2"));

        pushButton = new QPushButton(centralwidget);  //生成按钮,并加入布局
        pushButton->setObjectName(QString::fromUtf8("pushButton"));
        verticalLayout_2->addWidget(pushButton);

        treeWidget = new QTreeWidget(centralwidget);  //生成树形窗体
        //老师讲过,树形窗体里的一行是一个条目,一个单元。

        QTreeWidgetItem * __qtreewidgetitem  = new QTreeWidgetItem(treeWidget);

        QTreeWidgetItem * __qtreewidgetitem1 = new QTreeWidgetItem(__qtreewidgetitem);
        new QTreeWidgetItem(__qtreewidgetitem1);
        new QTreeWidgetItem(__qtreewidgetitem1);

        QTreeWidgetItem * __qtreewidgetitem2 = new QTreeWidgetItem(__qtreewidgetitem);
        new QTreeWidgetItem(__qtreewidgetitem2);
        new QTreeWidgetItem(__qtreewidgetitem2);

        //这是分水岭。***********************************************
        //以上是为 item  加入了 item1 和 item2  **********************
        //以下是为 item3 加入了 item4 和 item5  **********************

        QTreeWidgetItem * __qtreewidgetitem3 = new QTreeWidgetItem(treeWidget);

        QTreeWidgetItem * __qtreewidgetitem4 = new QTreeWidgetItem(__qtreewidgetitem3);
        new QTreeWidgetItem(__qtreewidgetitem4);
        new QTreeWidgetItem(__qtreewidgetitem4);

        QTreeWidgetItem * __qtreewidgetitem5 = new QTreeWidgetItem(__qtreewidgetitem3);
        new QTreeWidgetItem(__qtreewidgetitem5);
        new QTreeWidgetItem(__qtreewidgetitem5);

        treeWidget->setObjectName(QString::fromUtf8("treeWidget"));

        verticalLayout_2->addWidget(treeWidget); //树表窗体被加入布局

        MainWindow->setCentralWidget(centralwidget); //进程窗体接收了中心窗体

        retranslateUi(MainWindow);

        QMetaObject::connectSlotsByName(MainWindow); //完善信号与槽
    } // setupUi

    void retranslateUi(QMainWindow *MainWindow)
    {
        MainWindow->setWindowTitle(
            QCoreApplication::translate("MainWindow", "T"         , nullptr));
        pushButton->setText(
            QCoreApplication::translate("MainWindow", "PushButton", nullptr));

        QTreeWidgetItem * ___qtreewidgetitem = treeWidget->headerItem(); //视图的头部条目
        ___qtreewidgetitem->setText(
            0, QCoreApplication::translate("MainWindow", "zone"   , nullptr));
        ___qtreewidgetitem->setText(
            1, QCoreApplication::translate("MainWindow", "bigShow", nullptr));

        const bool __sortingEnabled = treeWidget->isSortingEnabled(); //修改表前取消视图的排序
        treeWidget->setSortingEnabled(false);

        QTreeWidgetItem * ___qtreewidgetitem1 = treeWidget->topLevelItem(0); //顶层河南条目
        ___qtreewidgetitem1->setText(
            0, QCoreApplication::translate("MainWindow", "henan", nullptr));
        ___qtreewidgetitem1->setText(
            1, QCoreApplication::translate("MainWindow", "HENAN", nullptr));

        QTreeWidgetItem * ___qtreewidgetitem2 = ___qtreewidgetitem1->child(0);//完善郑州条目
        ___qtreewidgetitem2->setText(
            1, QCoreApplication::translate("MainWindow", "ZHENGZHOU", nullptr));
        ___qtreewidgetitem2->setText(
            0, QCoreApplication::translate("MainWindow", "zhengzhou", nullptr));

        QTreeWidgetItem * ___qtreewidgetitem3 = ___qtreewidgetitem2->child(0); //完善新郑县
        ___qtreewidgetitem3->setText(
            1, QCoreApplication::translate("MainWindow", "XINZHENG", nullptr));
        ___qtreewidgetitem3->setText(
            0, QCoreApplication::translate("MainWindow", "xinzheng", nullptr));

        QTreeWidgetItem * ___qtreewidgetitem4 = ___qtreewidgetitem2->child(1); //完善金水区
        ___qtreewidgetitem4->setText(
            1, QCoreApplication::translate("MainWindow", "JINSHUI", nullptr));
        ___qtreewidgetitem4->setText(
            0, QCoreApplication::translate("MainWindow", "jinshui", nullptr));

        QTreeWidgetItem *___qtreewidgetitem5 = ___qtreewidgetitem1->child(1); //完善周口市
        ___qtreewidgetitem5->setText(
            1, QCoreApplication::translate("MainWindow", "ZHOUKOU", nullptr));
        ___qtreewidgetitem5->setText(
            0, QCoreApplication::translate("MainWindow", "zhoukou", nullptr));

        QTreeWidgetItem *___qtreewidgetitem6 = ___qtreewidgetitem5->child(0); //完善西华县
        ___qtreewidgetitem6->setText(
            1, QCoreApplication::translate("MainWindow", "XIHUA", nullptr));
        ___qtreewidgetitem6->setText(
            0, QCoreApplication::translate("MainWindow", "xihua", nullptr));

        QTreeWidgetItem *___qtreewidgetitem7 = ___qtreewidgetitem5->child(1); //完善商水县
        ___qtreewidgetitem7->setText(
            1, QCoreApplication::translate("MainWindow", "SHANGSHUI", nullptr));
        ___qtreewidgetitem7->setText(
            0, QCoreApplication::translate("MainWindow", "shangshui", nullptr));

        QTreeWidgetItem * ___qtreewidgetitem8 = treeWidget->topLevelItem(1);  //山东省
        ___qtreewidgetitem8->setText(
            1, QCoreApplication::translate("MainWindow", "SHANDONG", nullptr));
        ___qtreewidgetitem8->setText(
            0, QCoreApplication::translate("MainWindow", "shandong", nullptr));

        QTreeWidgetItem * ___qtreewidgetitem9 = ___qtreewidgetitem8->child(0); //日照市
        ___qtreewidgetitem9->setText(
            1, QCoreApplication::translate("MainWindow", "RIZHAO", nullptr));
        ___qtreewidgetitem9->setText(
            0, QCoreApplication::translate("MainWindow", "rizhao", nullptr));

        QTreeWidgetItem * ___qtreewidgetitem10 = ___qtreewidgetitem9->child(0); //岚山区
        ___qtreewidgetitem10->setText(
            1, QCoreApplication::translate("MainWindow", "LANSHAN", nullptr));
        ___qtreewidgetitem10->setText(
            0, QCoreApplication::translate("MainWindow", "lanshan", nullptr));

        QTreeWidgetItem * ___qtreewidgetitem11 = ___qtreewidgetitem9->child(1); //莒县
        ___qtreewidgetitem11->setText(
            1, QCoreApplication::translate("MainWindow", "JUXIAN", nullptr));
        ___qtreewidgetitem11->setText(
            0, QCoreApplication::translate("MainWindow", "juxian", nullptr));

        QTreeWidgetItem * ___qtreewidgetitem12 = ___qtreewidgetitem8->child(1); //济南市
        ___qtreewidgetitem12->setText(
            1, QCoreApplication::translate("MainWindow", "JINAN", nullptr));
        ___qtreewidgetitem12->setText(
            0, QCoreApplication::translate("MainWindow", "jinan", nullptr));

        QTreeWidgetItem * ___qtreewidgetitem13 = ___qtreewidgetitem12->child(0);//章丘县
        ___qtreewidgetitem13->setText(
            1, QCoreApplication::translate("MainWindow", "ZHANGQIU", nullptr));
        ___qtreewidgetitem13->setText(
            0, QCoreApplication::translate("MainWindow", "zhangqiu", nullptr));

        QTreeWidgetItem * ___qtreewidgetitem14 = ___qtreewidgetitem12->child(1);//莱芜区
        ___qtreewidgetitem14->setText(
            1, QCoreApplication::translate("MainWindow", "LAIWU", nullptr));
        ___qtreewidgetitem14->setText(
            0, QCoreApplication::translate("MainWindow", "laiwu", nullptr));

        treeWidget->setSortingEnabled(__sortingEnabled); //恢复树表的排序设置

    } // retranslateUi

};

namespace Ui {
    class MainWindow: public Ui_MainWindow {};
} // namespace Ui

QT_END_NAMESPACE

#endif // UI_MAINWINDOW_H

(3) 上面的 setupUi 函数里的指针太多,绕来绕去,这些树表条目指针搭建的是这样的结构

在这里插入图片描述

(4)

谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

zhangzhangkeji

谢谢支持

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

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

打赏作者

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

抵扣说明:

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

余额充值