Skip to content

ElaNavigationRouter 组件文档 ​

概述 ​

ElaNavigationRouter 是一个现代化的导航路由组件,提供了路由管理、状态追踪、数据传递等特性。它适用于管理应用程序的导航状态和页面跳转。

特性 ​

  • 路由管理
  • 状态追踪
  • 数据传递
  • 回退支持
  • 队列管理
  • 单例模式
  • 连接类型
  • 最大限制

属性 ​

基础属性 ​

cpp
// 最大路由数量
Q_PROPERTY(int maxRouteCount 
    READ getMaxRouteCount 
    WRITE setMaxRouteCount)

公共方法 ​

路由管理 ​

cpp
// 导航路由
ElaNavigationRouterType::NavigationRouteType 
navigationRoute(
    QObject* routeObject,
    QString routeFunctionName,
    const QVariantMap& routeData = {},
    Qt::ConnectionType connectionType = 
        Qt::AutoConnection
);

// 路由回退
void navigationRouteBack();

信号 ​

cpp
// 路由状态改变
Q_SIGNAL void navigationRouterStateChanged(
    bool state
);

路由类型 ​

cpp
namespace ElaNavigationRouterType {
    enum NavigationRouteType {
        Success,            // 成功
        ObjectInvalid,     // 对象无效
        FunctionNameInvalid // 函数名无效
    };
}

数据结构 ​

路由数据 ​

cpp
QVariantMap routeData {
    "ElaRouteObject": QObject*,      // 路由对象
    "ElaRouteFunctionName": QString, // 函数名
    "ElaRouteData": QVariantMap,    // 传递数据
    "ElaRouteConnectionType": Qt::ConnectionType 
                                    // 连接类型
};

使用示例 ​

基础用法 ​

1. 获取实例 ​

cpp
// 获取路由实例
auto router = ElaNavigationRouter::getInstance();

// 设置最大路由数
router->setMaxRouteCount(25);

2. 导航路由 ​

cpp
// 基础路由
router->navigationRoute(
    targetObject,
    "onNavigate"
);

// 带数据路由
QVariantMap data;
data["key"] = "value";
router->navigationRoute(
    targetObject,
    "onNavigate",
    data
);

// 指定连接类型
router->navigationRoute(
    targetObject,
    "onNavigate",
    data,
    Qt::QueuedConnection
);

3. 路由回退 ​

cpp
// 回退到上一个路由
router->navigationRouteBack();

// 监听路由状态
connect(router, 
    &ElaNavigationRouter::navigationRouterStateChanged,
    this, [=](bool state) {
    qDebug() << "Router State:" << state;
});

4. 接收路由 ​

cpp
// 在目标对象中定义槽函数
public slots:
void onNavigate(QVariantMap data) {
    QString value = data["key"].toString();
    // 处理导航逻辑
}

注意事项 ​

  1. 单例模式
  2. 队列管理
  3. 最大限制25
  4. 智能内存管理
  5. 事件处理
  6. 性能优化
  7. 状态追踪
  8. 数据传递

最佳实践 ​

  1. 合理设置限制
  2. 控制路由数量
  3. 及时清理路由
  4. 注意性能影响
  5. 统一交互方式
  6. 保持状态一致
  7. 异步处理
  8. 错误处理

相关组件 ​

  • QObject: 基类
  • QQueue: 队列管理
  • QVariantMap: 数据容器
  • QMetaObject: 元对象系统