我有一个QTableView,我想在编辑模式下始终显示最后一列。 (这是一个Qcombobox,用户应该能够始终更改值。)

我想我已经看到了解决方案 QT文档, ,但我找不到了。有什么简单的方法吗?

我想我可以通过使用 openPersistentEditor() 对于每个单元,但是我正在寻找一种更好的方法。 (就像整列仅指定一次一样。)

有帮助吗?

解决方案

有两种可能性:

使用 setIndexWidget, ,但是Trolltech写道:

此功能仅应用于在与数据项目相对应的可见区域内显示静态内容。如果要显示自定义动态内容或实现自定义编辑器小部件,则代替Qitemdelegate子类。

(并且它打破了模型/视图模式…)

或使用 代表的 paint 方法. 。但是在这里,您必须自己实现启用/禁用元素之类的所有内容。

其他提示

获取自动编辑行为的一种方法是使用qabstractitemview :: alleditTriggers值调用视图的设置dittriggers()函数。

要以某种方式显示给定列的内容,请查看qabstractItemview :: setIteMdelegateForcolumn()。这将使您仅针对需要它的项目指定自定义委托。但是,它不会自动为每个人创建一个编辑器小部件(原则上可能是成千上万个),但是您可以使用代表以使其看起来像编辑器窗口小部件的方式渲染每个项目。

qabtractItemModel::标志 虚拟函数被调用以测试是否可以编辑(请参阅 qt :: inatisionable)。看一眼 使模型可编辑 在里面 模型/查看编程 文档。

我看不到一种简单的方法来做到这一点,但是您可以通过使用委托来管理。老实说,我不知道它将如何工作,但是如果您努力努力,您应该能够使某些事情有效。如果获得适当的委托,则应该能够在整个视图,一个视图的一个单元格或列或行上设置它。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top