相关QAbstractListModel问题,求指导,问题可能多一些

tt2com 2012-09-28 11:01:36
相关QAbstractListModel的求教贴,
问题可能比较多,我刚开始看QAbstractListModel这个接口,
首先问一个问题
Qt::ItemFlags AnimalModel::flags ( const QModelIndex & index ) const
在什么时候调用?
我需要获取listview是可编辑的,但我子类中写了这个函数,我debug没发现这个函数被调用。
首先第一个问题

这个函数什么时候被调用,是要显性调用嘛?如果显性调用那么应该何处,何时调用?
求指导下原理性东西,我看assistant就一句话,没看明白怎么用.
...全文
302 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
tt2com 2012-09-29
  • 打赏
  • 举报
回复
哎又是个傻B 问题,不问了,在问下去真成大SB了。
tt2com 2012-09-29
  • 打赏
  • 举报
回复
QModelIndex QAbstractItemModel::index ( int row, int column, const QModelIndex & parent = QModelIndex() )
这个纯虚函数,哪位有实现的demo的?
tt2com 2012-09-29
  • 打赏
  • 举报
回复
在问个问题 我在qml中的listview取得的索引index 为int形的
而QAbstractListModel中的索引均为 QModelIndex 形的,我怎么转换二者?

QModelIndex class中我没看到如何将int值进行装换
allencui0313 有经验没?
  • 打赏
  • 举报
回复
。。。。。囧。。搞定了哇。哈哈。。
tt2com 2012-09-29
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

明天来试试这个。。
[/Quote]
哎这个问题有点傻啊,其实只要用qml和c++交互,如何通过c++直接调用QAbstractListModel的接口函数,同时发送DateChange 信号就可以了,一时脑子没开窍
tt2com 2012-09-29
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 的回复:]

哦。这个是构建index 和数据的关系。你可以看看QAbstractTableModel里面的实现就明白了哈。。


QModelIndex..有三个重要的参数。。所以个int是不能隐式转换成QModelIndex的。。
[/Quote]
不必转换,QAbstractItemModel处理通过接口index还通过了一个实现,只有把row传进去就行了
  • 打赏
  • 举报
回复
哦。这个是构建index 和数据的关系。你可以看看QAbstractTableModel里面的实现就明白了哈。。


QModelIndex..有三个重要的参数。。所以个int是不能隐式转换成QModelIndex的。。
  • 打赏
  • 举报
回复
不客气哈。 我做完了。 如果有时间下午试试c++ model + qml listview
tt2com 2012-09-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

需要实现下面的虚方法才能完成一个可以编辑的model.
但是我没在qml里面用过。。
C++的model-view中的model是这样做的。

//创建你编辑时候的控件
QWidget* createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) ……
[/Quote]
我找了个纯c++的demo,发现这个函数是无限被被调用,即打上断点就出不来了。我先看看你上面提供的信息
3Q
  • 打赏
  • 举报
回复
需要实现下面的虚方法才能完成一个可以编辑的model.
但是我没在qml里面用过。。
C++的model-view中的model是这样做的。

//创建你编辑时候的控件
QWidget* createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const;
//编辑的时候设置数据到上面创建的editor中。
void setEditorData(QWidget *editor, const QModelIndex &index) const;
//编辑完成,保存数据到data中
void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const;
//设置编辑控件的位置和大小。样式等
void updateEditorGeometry ( QWidget * editor, const QStyleOptionViewItem & option, const QModelIndex & index ) const;


应该是相通的qml c++你可以对照着看看。希望对你有帮助。
tt2com 2012-09-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

都是模板函数哈。model-view 框架自动调用的。。
[/Quote]
我忘了说一个前提,我是将其子类放到了qml中,我应该如何完善子类,
因为我现在看到的demo仅仅是只读的,我希望可编辑的,但我加上的上面的函数没有如何作用
demo是Qt自带的,相关QAbstractListModel导入qml的那个例子,在assistant中路径
Home > Examples > QML Examples & Demos > Models and Views: AbstractItemModel Example
  • 打赏
  • 举报
回复
什么时候被调用要看源码哈。
主要是用于设置index指向的数据能否被修改。这些。
  • 打赏
  • 举报
回复
都是模板函数哈。model-view 框架自动调用的。。
  • 打赏
  • 举报
回复
明天来试试这个。。
tt2com 2012-09-28
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

关键是你想做啥?。。。
[/Quote]
我想法很简单,就是将鼠标选中的index传回到QAbstractListModel进行处理也就是qml和QAbstractListModel进行交换
在Qt官方demo上只有QAbstractListModel将数据交给qml显示,我现在需要将qml的一些动作信息传回给QAbstractListModel
  • 打赏
  • 举报
回复
关键是你想做啥?。。。
tt2com 2012-09-28
  • 打赏
  • 举报
回复
我在qml中用MouseArea来获取listItem中的动作,但如何将这个动作传给model。
这里就有几个问题来了
假设我mouse 的press的动作作为设置currentIndex,可是我对如何获取获取model的index和设置current的index
一点思路都没。

哪位可以指导下,(现在脑子一股子浆糊,不知道大家有没看懂我说啥)

16,239

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧