PyQt5 QTableView:如何在保持默认样式/颜色的同时禁用用户交互/选择?
Posted
技术标签:
【中文标题】PyQt5 QTableView:如何在保持默认样式/颜色的同时禁用用户交互/选择?【英文标题】:PyQt5 QTableView: how to disable user interaction/selection while keeping the default style/colors? 【发布时间】:2019-04-13 12:13:49 【问题描述】:我需要能够以编程方式选择 TableView 的某些行,从而向用户显示选定的行。 当然,用户应该不能通过单击此处和此处来更改选定的行。
目前,我发现禁用用户交互的唯一方法是:
self.table_view.setEnabled(False)
虽然这解决了用户的选择问题,但它也改变了表格的外观,使其全部变灰:
如何恢复原始样式,使选定的行显示为蓝色?
【问题讨论】:
【参考方案1】:打开 QDesigner 并加载您的 .ui 文件。单击您的 QTableView 并在属性编辑器(右侧面板)中向下滚动到紫色区域。在那里你会看到editTriggers
,展开它。检查第一个写着NoEditTriggers
的人。
这将禁止用户编辑表格中的单元格。如果我的说明不够清楚,请告诉我,我可以提供图片。
【讨论】:
我是从头开始编写代码的,而不是使用 QDesigner 那就试试self.table.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers)
。
它没有用。也许是因为它不是关于编辑,而是选择。【参考方案2】:
如果我正确理解您的问题,您必须使用属性:
setSelectionMode()setSelectionBehavior()
table_view.setSelectionMode(QtWidgets.QAbstractItemView.NoSelection)
table_view.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)
【讨论】:
以上是关于PyQt5 QTableView:如何在保持默认样式/颜色的同时禁用用户交互/选择?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 QTableView 中将 QColor 作为 QBackgroundRole 返回,它在 PyQt5 中具有预设样式表?
PyQt5 QTableView 用 Delegate 选择单元格背景