我有以下QT模型/视图框架的问题。我想在一个表视图项中渲染一个小部件。如何在QT中的树视图项目中呈现复杂的小部件?
首先我想到的是使用
void QAbstractItemView::setIndexWidget(const QModelIndex & index, QWidget * widget)
但对于这个函数的文档明确规定:
此功能只能用于 显示静态内容中对应 可见区域数据项目 。如果要显示自定义 动态内容或实现自定义 编辑器窗口小部件,请改为QItemDelegate的子类 。
所以他们建议在这里使用代表。那么,迄今为止这么好。我知道可以使用代表创建一个编辑器,这可能基本上是任何QT小部件。但是这里存在这个问题 - 我不希望这个小部件成为编辑器 - 我想要使用这个小部件始终呈现该项目。而不仅仅是“呈现”,我需要它具有小部件的确切行为。
现在我想使用的小部件是一个自定义小部件,它是一些其他小部件(几个复选框,几个带有一些布局的按钮)的容器。
我认为解决的办法是这样的:
- 抓住我的自定义部件的外观的像素图。
- 让委托使用此像素图绘制自己。
- 当鼠标移动到某个项目使视图自动启动编辑(我不
知道如何做到这一点,但我想这是可能的) - 让委托创建我的窗口小部件的编辑器一个物品。
此解决方案似乎可行,但对我来说味道不好。任何人都可以为这个问题提供更优雅的解决方案?
谢谢。
你是什么意思“我需要它具有小部件的确切行为? – 2010-01-26 19:59:01
我的意思是与用户进行交互 - 对其行为做出反应 – Lev 2010-01-26 20:55:59
你想要什么样的交互?一个细胞,它不是,所以我有一个很难想象你真正想要在交互方式的控件。 – 2010-01-26 21:40:24