1

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

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

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

4

3 回答 3

1

我有同样的问题。

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

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

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

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

于 2013-11-08T15:17:47.403 回答
1

您应该使用委托。

方法如下:http: //qt-project.org/faq/answer/how_can_i_remove_the_dotted_rectangle_from_the_cell_that_has_focus_in_my_qt

在 Python 中:http: //imath.diandian.com/post/2013-07-09/40051407386

于 2013-11-07T02:37:57.703 回答
1

请尝试 QTableView 的方法

setSelectionBehavior(QAbstractItemView::SelectRows);
于 2012-07-21T01:58:37.560 回答