我有一个 QTableView,我想始终在最后一列中显示编辑模式。(它是一个 QComboBox,用户应该能够随时更改值。)
我认为我在 Qt 文档 中看到了解决方案,但我现在找不到它了。有没有简单的方法可以做到这一点?
我认为我可以通过使用openPersistentEditor()
来实现此效果,但我正在寻找更好的方法。(比如仅为整个列指定一次。)
我有一个 QTableView,我想始终在最后一列中显示编辑模式。(它是一个 QComboBox,用户应该能够随时更改值。)
我认为我在 Qt 文档 中看到了解决方案,但我现在找不到它了。有没有简单的方法可以做到这一点?
我认为我可以通过使用openPersistentEditor()
来实现此效果,但我正在寻找更好的方法。(比如仅为整个列指定一次。)
setIndexWidget
,但 Trolltech 写道:
(并且它会破坏模型/视图模式...)此函数应仅用于在数据项对应的可见区域内显示静态内容。如果要显示自定义动态内容或实现自定义编辑器小部件,则应子类化 QItemDelegate。
paint
方法。但是这里需要自己实现像启用/禁用元素之类的所有内容。要获得自动编辑行为的一种方法是使用QAbstractItemView::AllEditTriggers值调用视图的setEditTriggers()函数。
要以某种方式显示给定列的内容,请查看QAbstractItemView::setItemDelegateForColumn()。这将让您仅为需要它的那些项目指定自定义委托。但是,它不会自动为每个项目创建编辑器小部件(原则上可能有成千上万个),但您可以使用委托以使每个项目看起来像编辑器小部件。
调用QAbstractItemModel::flags虚函数来测试项是否可编辑(请参见Qt::ItemIsEditable)。请查看模型/视图编程文档中的使模型可编辑。