123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- #ifndef TREEVIEWMANAGER_H
- #define TREEVIEWMANAGER_H
- #include <QWidget>
- #include <QTreeView>
- #include <QJsonObject>
- #include <QStandardItemModel>
- #include <QMap>
- #include <QCheckBox>
- #include <QJsonDocument>
- #include <QJsonArray>
- #include <QFile>
- #include <QVBoxLayout>
- #include <QLabel>
- #include <QLineEdit>
- #include <QComboBox>
- #include <QRadioButton>
- #include <QButtonGroup>
- #include <QDebug>
- #include <QPushButton>
- #include <QStyleFactory>
- class TreeViewManager : public QWidget
- {
- Q_OBJECT
- public:
- /**
- * @brief 构造函数
- * @param parent 父窗口
- * @param downView 完整目录树的视图
- * @param widget2 父组件,用于确定导航栏位置
- * @param horizontalLayout2 用于计算导航栏宽度
- */
- explicit TreeViewManager(QWidget *parent, QWidget *widget2);
- /**
- * @brief 加载 JSON 数据并初始化树视图
- * @param filePath JSON 文件路径
- */
- void loadJsonFromFile(const QString &filePath);
- void loadTreeData(const QJsonDocument &doc);
- //void setupTreeData();
- void applyCustomStyles();
- /**
- * @brief 更新导航栏内容,根据点击的目录项动态显示
- * @param index 点击的目录项索引
- */
- void updateNavigationBar(const QModelIndex &index);
- private:
- // 界面组件
- QWidget *widget2; // 父组件,用于确定导航栏位置
- QTreeView *treeViewDown; // 完整目录树
- QStandardItemModel *downModel; // 树状结构模型
- QWidget *navigationWidget; // 动态导航栏窗口
- QVBoxLayout *navigationLayout; // 导航栏布局
- QPushButton *buttonOpenFile; // 返回一级菜单
- QPushButton *buttonUp; // 遍历导航向上
- QPushButton *buttonDown; // 遍历导航向下
- QPushButton *buttonLeft; // 进入下一级目录
- QPushButton *buttonRight; // 返回上一级目录
- QModelIndex getNextIndex(const QModelIndex ¤tIndex);
- void setupButton(); // 创建并初始化按钮
- /**
- * @brief 构建目录树
- * @param jsonObj JSON 数据对象
- * @param parent 父节点
- */
- void buildTree(const QJsonObject &jsonObj, QStandardItem *parent);
- /**
- * @brief 显示字段属性(仅用于构建树,不涉及字段窗口)
- * @param fields 字段数据
- */
- //void displayFields(const QJsonObject &fields);
- /**
- * @brief 显示三级目录的字段内容(打开新窗口)
- * @param fields 字段数据
- */
- void displayThirdLevelFields(const QJsonObject &fields);
- /**
- * @brief 更新导航栏窗口的几何位置
- */
- void updateNavigationWidgetGeometry();
- private slots:
- void onButtonOpenFileClicked(); // 槽函数:返回一级菜单
- void onButtonUpClicked(); // 槽函数:遍历导航向上
- void onButtonDownClicked(); // 槽函数:遍历导航向下
- void onButtonLeftClicked(); // 槽函数:进入下一级目录
- void onButtonRightClicked(); // 槽函数:返回上一级目录
- };
- #endif // TREEVIEWMANAGER_H
|