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

时间:2014-07-26 16:57:29

标签: python c++ qt qt4 qtablewidget

我有一个带有禁用的setSelectionMode(QTableWidget :: NoSelection)的QTableWidget,而我填写的QTableWidgetItem没有Qt :: ItemIsEditable标志。

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

Highlighted cell

如何禁用此“光标”?

4 个答案:

答案 0 :(得分:9)

这有帮助吗?

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

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

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

编辑:通过设置整个小部件的焦点策略,你可以通过设置整个小部件的焦点策略来解决这个问题:你应该通过交互(而不是选择)去掉小部件周围的任何边框:

tableWidget->setFocusPolicy(Qt::NoFocus);

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

答案 1 :(得分:1)

{{1}}

这些语句将禁止在单元格中选择表格。

答案 2 :(得分:0)

我认为,这个答案既简单又正确,在这里也应该被接受:https://stackoverflow.com/a/2061871/2752221

我不确定在SO上处理该问题的正确方法是什么。也许这个问题应该被标记为另一个问题的重复。我不知道该怎么做。无论如何,对于那些阅读本文的人来说,有一个指向正确答案的链接。 :->

答案 3 :(得分:-1)

以下解决方案对我有用:

tableWidget->setFocusPolicy(Qt::NoFocus);

但问题是,您无法使用键盘在QTableWidget上上下移动。

所以我认为解决方案并不好。