ItemDelegate vs ProxyModel Subclass

时间:2015-01-14 13:36:19

标签: qt qabstractitemmodel qitemdelegate qsortfilterproxymodel

我必须创建一个表单,其中将从数据库中获取一些问题。每个问题都有两个radioButtons(是/否),一个标签" Explain ..."和textEdit。 首先,我在QScrollArea中创建了它,对于db中的每个问题(使用QSqlTableModel),创建了所有必需的小部件并将其放入布局中。

现在我认为我最好在QListView中进行,其中一个项目将是所有问题=其信息(问题+ 2 radioButtons + label + textEdit +其布局)。我以为我可以轻松地使用QAbstractItemDelegate,所以我为它创建了一个子类,但我遇到了一些问题。 这个问题根本没有显示,甚至是它的信息。我应该使用ProxyModel的子类吗?我找到了一个非常有用的checkableProxyModel!子类为模型中的每个项添加了一个复选框,我想如果可以添加一个checkBox,也许可以添加所有这些信息?

有什么想法吗?

评论是否需要任何代码。

1 个答案:

答案 0 :(得分:0)

Qt模型&通过在Qt::ItemIsUserCheckable的标志返回值中包含QAbstractItemModel::flags(),查看类只能提供额外的复选框。然而,Qt MV课程不允许任何自定义小部件(如单选按钮)用作代理。

呈现窗口小部件的一种方法是在QAbstractItemModel :: paint()重新实现中使用QStyle::drawComplexControl(),但是如果你有多个小部件,就像在你的情况下那样,它就会变得很困难,并且它不能处理交互

更好的方法是使用QAbstractItemView::setIndexWidget(),但请参阅this bug report,了解Qt开发人员谈论性能影响。