ItemDelegate与ProxyModel子类

问题描述:

我必须创建一个表单,其中一些问题将从数据库中获取。每个问题将有两个radioButtons(Yes/No),一个标签“Explain ...”和一个textEdit。 首先,我在一个QScrollArea中创建了它,其中对于db中的每个问题(通过QSqlTableModel获取),创建了所有必需的小部件并放入布局中。ItemDelegate与ProxyModel子类

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

有什么想法?

评论如果您需要任何代码。

Qt模型&视图类只能提供额外的复选框,通过在标志返回值QAbstractItemModel::flags()中包含Qt::ItemIsUserCheckable。但是,Qt MV类不允许像单选按钮这样的自定义小部件用作代表。

渲染一个窗口小部件的一种方法是在你的QAbstractItemModel :: paint()重新实现中使用QStyle::drawComplexControl(),但是当你有多个窗口小部件时会变得很困难,并且它不处理交互。

更好的方法是使用QAbstractItemView::setIndexWidget(),但请参阅this bug report,以了解Qt开发人员如何讨论性能问题。

+0

我发现它甚至可以添加一个单选按钮,但无论如何它是复杂得多,而不是使其更具动态性,我只会有一个复杂的代码:)所以这是没用的,我猜。我认为我可以在qTreeView中做到这一点,将问题作为父项,将描述作为问题的子项,将第二列作为复选框Y/N。我会看看你推荐的文档。谢谢@tmcguire! – Dionis