标题:自定义树形结构导航栏
作者:sssooonnnggg
日期:2015-01-26 10:49
内容:
应网友 @heartlessjun 要求,将项目中实现的树形结构导航栏的源码剥离出来,与各位分享。
树形结构的数据通过读取xml文件来获取,xml文件结构如下:
&nbs ..
#1 [sssooonnnggg 01-26 10:52]
在项目中的使用效果
#2 [toby520 01-26 11:05]
不错 做的 加油吧 分享更多 更好的
#3 [xsjqqq123 01-26 13:10]
取证工具是什么?我将做一个linux上手机管理的,和你这个有几分相似,导航栏就不客气地收下了,话说,你那个分区大小是如何得到的?adb似乎没这样的功能吧
#4 回 xsjqqq123 的帖子 [sssooonnnggg 01-26 13:38]
xsjqqq123:取证工具是什么?我将做一个linux上手机管理的,和你这个有几分相似,导航栏就不客气地收下了,话说,你那个分区大小是如何得到的?adb似乎没这样的功能吧 (2015-01-26 13:10)
linux大部分命令都可以通过adb 来调用,分区大小可以用 adb shell df 来看
#5 [zjmmlab 01-26 16:39]
感谢分享
下载源码编译运行到这里总是无法得到正确的 node 指针,调试看到 node 中都是无效的地址:
NavModel::TreeNode* node = (NavModel::TreeNode*)index.data(Qt::UserRole).toUInt();
后稍作修改:
NavModel::TreeNode* node = index.data(Qt::UserRole).value();
相应的 NavModel 类的函数也修改如下:
QVariant NavModel::data(const QModelIndex &index, int role) const
{
...
...
if (role == QT::DisplayRole)
return m_list.label;
else if (role == Qt::UserRole)
return QVariant::fromValue(m_list.treeNode);
....
}
这样即可正常运行。楼主原来的方法是将 treeNode 指针转换为 unsigned int 再放到 QVariant 中传回,使用时先 QVariant::toUInt() 再强制类型转换为地址,这种方法不知是否可行,在我的电脑上总是出错(WIN8.1 + Qt5.3.2 + VS2013)。