如何禁用QTableWidget中的选择突出显示

Tob*_*old 3 c++ python qt qt4 qtablewidget

我有一个QTableWidget的有残疾的setSelectionMode(QTableWidget的:: NOSELECTION),我填不具备的Qt :: ItemIsEditable标志QTableWidgetItems.

然而,单击的单元格会获得某种光标(在我的情况下,底部的黑线):

突出显示的细胞

如何禁用此"光标"?

小智 18

#include <QTableWidget>



tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
tableWidget->setFocusPolicy(Qt::NoFocus);
tableWidget->setSelectionMode(QAbstractItemView::NoSelection);
Run Code Online (Sandbox Code Playgroud)

这些语句将禁用单元格中表格的选择。


Eri*_*rik 9

这有帮助吗?

QPalette palette = tableWidget->palette();
palette.setBrush(QPalette::Highlight,QBrush(Qt::white));
palette.setBrush(QPalette::HighlightedText,QBrush(Qt::black));
tableWidget->setPalette(palette);
Run Code Online (Sandbox Code Playgroud)

详细说明:项目的外观由视图的调色板控制,您可以使用该TableWidget::palette()方法检索该视图.请注意,它会被返回,const因此您可以获得副本,更改它,然后使用它来应用它setPalette.另请注意,此处我只是将单元格颜色设置为白色,将文本颜色设置为黑色,理想情况下,您可以将其专门设置为默认单元格颜色(也可从调色板中获得).最后请注意,在我的情况下,该项仍然保留了与我在此处未尝试解决的默认边框不同的边框.

您可以阅读有关各种颜色定义的更多详细信息,例如此处(适用于Qt 4.8)http://qt-project.org/doc/qt-4.8/qpalette.html#ColorRole-enum

编辑:一些更筛选似乎你应该通过设置整个小部件的焦点策略,在交互(而不是选择)时删除小部件周围的任何边框,如下所示:

tableWidget->setFocusPolicy(Qt::NoFocus);
Run Code Online (Sandbox Code Playgroud)

如果这不能解决问题,那么我的想法很快就会出现.

  • 另外一个补充:似乎这个帖子得出了同样的结论:http://stackoverflow.com/questions/2055705/hide-the-border-of-the-selected-cell-in-qtablewidget-in-pyqt但它是警告说使用`Qt :: NoFocus`失去了使用键盘导航的能力,这对你来说可能是也可能不是问题 (2认同)
  • setFocusPolicy(Qt :: NoFocus)可以解决问题!谢谢 :-) (2认同)