• 6913阅读
  • 13回复

小小记事本问题 [复制链接]

上一主题 下一主题
离线zzz945
 
只看楼主 倒序阅读 楼主  发表于: 2009-02-06
还有个功能没能实现,我想左边的treeView在程序退出时保存现有打开的目录,下次程序启动时能恢复上交退出时的treeView的样子,希望高手指点
附件: mymdiedit.rar (2597 K) 下载次数:27
只看该作者 1楼 发表于: 2009-02-06
关闭前QSettings往注册表写入信息,下次读出来
离线zzz945
只看该作者 2楼 发表于: 2009-02-06
知道得用qsettings,但不知道怎样从treeView中的dirModel中读到已打开的index,然后写入,,还请指点
只看该作者 3楼 发表于: 2009-02-06
试试看从rootIndex开始一个个isExpanded,之后indexBelow
读到展开的就存下
下次打开就expand
离线zzz945
只看该作者 4楼 发表于: 2009-02-06
感觉这样做会慢得不得了,现在受到启示:treeView打开一个目录时会发出signal(expanded(qmodelindex *)),接收这个信号并保存这个index到一个list中,然后在程序退出是写入settings,但还有个问题不明白,怎样用qsettings能保存qmodelindex,qmodelindex不属于qvariant
离线zzz945
只看该作者 5楼 发表于: 2009-02-06
补充上面:当目录关闭时会发colliapsed(qmodelindex *)信号,要接收这个信号然后把这个关闭的index从list中移除
离线zzz945
只看该作者 6楼 发表于: 2009-02-06
现存问题:qsettings 怎样保存不属于variant的数据,还请指点
只看该作者 7楼 发表于: 2009-02-06
是个问题……但你有没有想过,下次打开时,qmodelindex 的值都有可能是错的啊,和之前不一样

所以,存展开的文件夹的路径吧
离线zzz945
只看该作者 8楼 发表于: 2009-02-06
expand(qmodelindex *)的参数是qmodelindex,如果存路径不知道怎样在treeView中expand
只看该作者 9楼 发表于: 2009-02-07
引用第8楼zzz945于2009-02-06 22:36发表的  :
expand(qmodelindex *)的参数是qmodelindex,如果存路径不知道怎样在treeView中expand

在model里找到路径,转换成qmodelindex之后展开啊
离线zzz945
只看该作者 10楼 发表于: 2009-02-07
引用第9楼都市无名者于2009-02-07 00:25发表的  :
在model里找到路径,转换成qmodelindex之后展开啊



那样是不是也得从ROOTINDEX开始一个一个找,觉得这样会特慢
只看该作者 11楼 发表于: 2009-02-07
引用第10楼zzz945于2009-02-07 10:32发表的  :
那样是不是也得从ROOTINDEX开始一个一个找,觉得这样会特慢

int row, int column
你要么存这个,下次按照这个来
QModelIndex QAbstractItemModel::createIndex ( int row, int column, void * ptr = 0 )

然后expand,但是还是没法保证你文件夹改动后能对

其实遍历时不进未展开的分支遍历,速度又不慢的
离线zzz945
只看该作者 12楼 发表于: 2009-02-07
引用第11楼都市无名者于2009-02-07 15:02发表的  :
int row, int column
你要么存这个,下次按照这个来
QModelIndex QAbstractItemModel::createIndex ( int row, int column, void * ptr = 0 )
.......


谢谢你的指点,有思路了,这就试试
离线zzz945
只看该作者 13楼 发表于: 2009-02-08
还有个问题,qdirmodel的index是由row,column,和父index组成的,他的父Indes可怎么保存啊,他的父index也是由row,column,和父index组成,我是不是要用一个树形的数据结构来保存,麻烦指点一下
快速回复
限100 字节
 
上一个 下一个