九天雁翎的博客

beginInsertRows(parent, row + 1, row + count);

endInsertRows();

return true;

beginRemoveRows(parent, row , row + count – 1);

endRemoveRows();

return true;

但是还是需要自己实现,不然的话实现是空的,那么是没有删除和添加效果的。相当不理解,那rowCount是干啥用的?其实应该只需要update/refresh一下就好了。或者,emit一下Qt中已经有的rowsInserted或者rowsRemoved signal也就好了,但是在rowsInserted,rowsRemoved信号的文档中明确的表示这两个消息不允许子类调用的,“It can only be emitted by theimplementation, and cannot be explicitly emitted in subclass code.”

而insertRow和removeRow是调用insertRows和removeRows来实现的,(文档如此描述)所以我们不需要实现了。不知道哪种逻辑更为正确,插入多行是多次插入呢,(所以插入多行可以通过多次调用插入一行实现)还是插入一行是插入多行的特殊情况呢?(就如同Qt这样反过来实现)

beginMoveRows和endMoveRows系列就更有意思了,因为没有moveRows用于重载…………..那么,这些protected的函数什么时候调用呢?

最后找到了layoutChanged信号,发现只需要在改动后emit此信号即可刷新。并且insert和remove都可以实现。原来……..Qt设计者眼中的update/refresh名字叫做layoutChanged………相当晕。

使用QAction作为快捷键的时候,在一个列表空间中创建,发现无论如何都无法出发triggered信号,,最后只能在全应用程序的菜单中添加action了事……..这个比较困惑,也就是说没有局部快捷键?

对Qt的了解有限,使用一周,为了防止同一个坑掉进去两次,特写下一些东西作为回头查阅的资料,觉得不对的请提出来。

梦想让我与众不同,奋斗让我改变命运!

九天雁翎的博客

相关文章:

你感兴趣的文章:

标签云: