我有一个带有禁用
QTableWidget
(setSelectionMode
) 的 QTableWidget::NoSelection
,并且我填写的 QTableWidgetItem
没有 Qt::ItemIsEditable
标志。
尽管如此,已单击的单元格会获得某种光标(在我的例子中底部的黑线):
如何禁用这个“光标”?
tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
tableWidget->setFocusPolicy(Qt::NoFocus);
tableWidget->setSelectionMode(QAbstractItemView::NoSelection);
这些语句将禁用表格中单元格的选择。
这有帮助吗?
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);
如果这不起作用,那么我很快就没有想法了。
以下解决方案对我有用:
tableWidget->setFocusPolicy(Qt::NoFocus);
但问题是,你无法使用键盘在
QTableWidget
上上下移动。
所以我认为这个解决方案不好。
您可以尝试将选择设置为透明作为解决方法并保持焦点:
QTableView::item::selected
{
background-color: transparent;
}