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();
// 处理导航逻辑
}注意事项
- 单例模式
- 队列管理
- 最大限制25
- 智能内存管理
- 事件处理
- 性能优化
- 状态追踪
- 数据传递
最佳实践
- 合理设置限制
- 控制路由数量
- 及时清理路由
- 注意性能影响
- 统一交互方式
- 保持状态一致
- 异步处理
- 错误处理
相关组件
- QObject: 基类
- QQueue: 队列管理
- QVariantMap: 数据容器
- QMetaObject: 元对象系统