(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)
谢谢