#ifndef TREEVIEWMANAGER_H #define TREEVIEWMANAGER_H #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include 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