我必须创建一个表单,其中将从数据库中获取一些问题。每个问题都有两个radioButtons(是/否),一个标签" Explain ..."和textEdit。 首先,我在QScrollArea中创建了它,对于db中的每个问题(使用QSqlTableModel),创建了所有必需的小部件并将其放入布局中。
现在我认为我最好在QListView中进行,其中一个项目将是所有问题=其信息(问题+ 2 radioButtons + label + textEdit +其布局)。我以为我可以轻松地使用QAbstractItemDelegate,所以我为它创建了一个子类,但我遇到了一些问题。 这个问题根本没有显示,甚至是它的信息。我应该使用ProxyModel的子类吗?我找到了一个非常有用的checkableProxyModel!子类为模型中的每个项添加了一个复选框,我想如果可以添加一个checkBox,也许可以添加所有这些信息?
有什么想法吗?
评论是否需要任何代码。
答案 0 :(得分:0)
Qt模型&通过在Qt::ItemIsUserCheckable的标志返回值中包含QAbstractItemModel::flags(),查看类只能提供额外的复选框。然而,Qt MV课程不允许任何自定义小部件(如单选按钮)用作代理。
呈现窗口小部件的一种方法是在QAbstractItemModel :: paint()重新实现中使用QStyle::drawComplexControl(),但是如果你有多个小部件,就像在你的情况下那样,它就会变得很困难,并且它不能处理交互
更好的方法是使用QAbstractItemView::setIndexWidget(),但请参阅this bug report,了解Qt开发人员谈论性能影响。