Qt:自定义QListView和实时控件

时间:2012-03-28 14:23:24

标签: qt

我的自定义QListView有代表来绘制项目。我想为一些行项(如QLineEdit)添加一个实时控件,它将始终存在于行中,并将自动与列表一起正确滚动。

由于项目不是小部件,我无法将控件指定为“项目”的子级,因此滚动会将控件保留在QListView小部件中的固定位置。

还有其他方法吗? 这甚至可能吗?

1 个答案:

答案 0 :(得分:0)

通常,当发生QEvent::EnterEditFocus事件时,委托会创建(和定位)编辑窗口小部件,然后在发生后续QEvent::LeaveEditFocus时将其销毁并将数据发送回模型。然后代表应重新绘制新的模型数据。

你可以扩展“实时”控件的含义吗?

为什么要让编辑小部件不断打开?我认为更好的方法是创建一个委托,以您想要的方式绘制正常视图(即Qt::DisplayRole)。假设您正确创建子类视图,代理应该在模型更改时更新。

如果你真的想做你想问的事,我怀疑你可以通过:

首先阅读模型/视图编程简介的Delegate Classes部分。如果你还没有,Spin Box Delegate ExamplePixelator Example也值得研究。