QT Qtableview 点击两次单元格后 表格的焦点会自动移动到最后一个是什么原因 已经设置了 了QAbstractItemView::NoEditTriggers C++
时间: 2023-06-26 16:08:34 浏览: 87
这很可能是因为单元格被选中后,QTableView默认的行为是将焦点移动到最后一个选中的单元格。为了避免这种情况,您可以使用QTableView的setSelectionMode()方法,将其设置为单个选项模式,如下所示:
```cpp
tableView->setSelectionMode(QAbstractItemView::SingleSelection);
```
此外,还要确保QTableView的EditTriggers属性被设置为NoEditTriggers,以便禁止编辑单元格:
```cpp
tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);
```
这样设置之后,当用户单击单元格时,焦点不会自动移动到最后一个选中的单元格。
相关问题
QT Qtableview 点击两次单元格后 表格的焦点会自动移动到最后一个是什么原因
在默认情况下,当你在QTableView中编辑单元格时,会将单元格的编辑器置于单元格中,此时单元格会失去焦点。如果你不点击任何其他单元格,那么焦点就会被自动移动到最后一个单元格(也就是表格的最后一个单元格)。
这种行为是由QTableView的默认设置决定的,你可以通过设置QTableView的editTriggers属性来改变它的行为。例如,如果你将editTriggers设置为QAbstractItemView::NoEditTriggers,那么当你点击单元格时,焦点就不会自动移动到最后一个单元格。你也可以使用其他的editTriggers选项来实现你想要的行为。
QT Qtableview 表格点击过再点击后 表格的焦点会自动移动到最后一个是什么原因
这种情况可能是表格的 "EditTriggers" 属性设置了 "CurrentChanged" 或 "SelectedClicked"。这将导致在单元格中编辑后,焦点将自动移动到下一个单元格或表格的最后一行。
可以尝试将 "EditTriggers" 属性设置为 "DoubleClicked",这样只有在第二次单击单元格时才会发生编辑,而不是在第一次单击时。或者可以在点击单元格时手动设置表格的 "CurrentIndex" 属性,以避免焦点自动移动。例如:
```python
table.setCurrentIndex(index) # index 是要设置的单元格的索引
```
另外,也可以查看表格的 "SelectionBehavior" 属性是否设置为 "SelectRows",这可能会影响焦点的行为。
阅读全文