【问题标题】:QTableView - row selection, focus on fieldsQTableView - 行选择,专注于字段
【发布时间】:2012-07-20 03:42:57
【问题描述】:

我想选择 QTableView 中的整行并且只选择行。用户不应该知道有任何单元格。我可以设置适当的 SelectionMode 但仍然:

  • 每个单元格在其所在的行被选中时都有一个圆角
  • 在 QTableView 上移动鼠标会移动“焦点”并选择光标下的单元格

我怎样才能避免这个问题?

【问题讨论】:

    标签: qt qtableview


    【解决方案1】:

    我遇到了同样的问题。

    我最终使用了QTreeView,它支持多列(如表格)。默认的拖放行为允许您仅拖动、移动和重新排序行。

    要使其外观和行为类似于仅行交互表,您需要设置以下属性:

    • allColumnsShowFocus = true(因此您看不到特定(列)项目周围的焦点框)
    • headerHidden = false(启用表头)
    • itemsExpandable = false(如果所有其他属性设置正确,则可以忽略)
    • rootIsDecorated = false(这会隐藏 topLevelItems 的展开句柄)
    • selectionBehavior = SelectRows
    • selectionMode = SingleSelection(或如你所愿...)
    • 对于移动行:
      • dragEnabled = true
      • acceptDrops = true
      • showDropIndicator = true
      • editTriggers::selectedClicked = false
      • 所有项目的项目标志:
        • ItemIsSelectable = true
        • ItemIsDragEnabled = true
        • ItemIsDropEnabled = false(因此您不能拖动 topLevelItem 成为另一个项的子项)
        • ItemIsEnabled = 真

    现在,如果您只使用 topLevelItems,则 treeView 会按照您的意愿行事。

    【讨论】:

      【解决方案2】:
      【解决方案3】:

      请尝试QTableView的方法

      setSelectionBehavior(QAbstractItemView::SelectRows);
      

      【讨论】:

      • 将行为设置为 SelectRows 并将模式设置为 SingleSelection 会在我可以选择行时结束,但仍将鼠标移到 QTableView 上会更改其下单元格的颜色。并且所选行中的每个单元格仍然具有圆角。
      • 像这样设置行为和模式暂时允许我在不选择多行的情况下调用 selectRow(当用户按下 Shift 时),很棒。
      猜你喜欢
      • 2015-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多