【问题标题】:PyQt5 QTableView: how to disable user interaction/selection while keeping the default style/colors?PyQt5 QTableView:如何在保持默认样式/颜色的同时禁用用户交互/选择?
【发布时间】:2019-04-13 12:13:49
【问题描述】:

我需要能够以编程方式选择 TableView 的某些行,从而向用户显示选定的行。 当然,用户应该不能通过单击此处和此处来更改选定的行。

目前,我发现禁用用户交互的唯一方法是:

self.table_view.setEnabled(False)

虽然这解决了用户的选择问题,但它也改变了表格的外观,使其全部变灰:

如何恢复原始样式,使选定的行显示为蓝色?

【问题讨论】:

    标签: python pyqt pyqt5


    【解决方案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)
      

    【讨论】:

      猜你喜欢
      • 2016-05-26
      • 2011-05-19
      • 1970-01-01
      • 1970-01-01
      • 2020-03-08
      • 2012-10-24
      • 2018-06-14
      • 1970-01-01
      • 2021-08-27
      相关资源
      最近更新 更多