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

新手上路,请多包涵

我有一个禁用 setSelectionMode (QTableWidget::NoSelection) 的 QTableWidget,并且我填写的 QTableWidgetItems 没有 Qt::ItemIsEditable 标志。

然而,一个被点击的单元格会得到某种光标(在我的例子中是底部的黑线):

突出显示的单元格

如何禁用此“光标”?

原文由 Tobias Leupold 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 722
2 个回答

这有帮助吗?

 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);

如果这不能解决问题,那么我很快就没有想法了。

原文由 Erik 发布,翻译遵循 CC BY-SA 3.0 许可协议

#include <QTableWidget>

tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
tableWidget->setFocusPolicy(Qt::NoFocus);
tableWidget->setSelectionMode(QAbstractItemView::NoSelection);

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

原文由 Senthil Kumar 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题