我有一个带有禁用的setSelectionMode(QTableWidget :: NoSelection)的QTableWidget,而我填写的QTableWidgetItem没有Qt :: ItemIsEditable标志。
尽管如此,单击的单元格会获得某种光标(在我的情况下,底部的黑线):
如何禁用此“光标”?
答案 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
上上下移动。
所以我认为解决方案并不好。