是否在pyqt的qtablewidget中隐藏选定单元格的边框?

是否在pyqt的qtablewidget中隐藏选定单元格的边框?,pyqt,qtablewidget,Pyqt,Qtablewidget,有没有办法在qtablewidget中隐藏选定单元格的边框(或使边框颜色为白色)。。默认情况下,将显示带虚线的边框。。你能帮我 您试图隐藏的选定单元格周围的虚线边框看起来是一个焦点矩形。任何给定的单元格都可以有焦点,不能同时被选中,反之亦然。如果不希望绘制此边框,请使用项委托。在那里,您可以在绘制项目之前从项目的状态中删除状态\ HasFocus样式。请参阅下面的一个关于如何做到这一点的例子,它是C++,如果你有麻烦把它转换成Python ,请告诉我。 // custom item delega

有没有办法在qtablewidget中隐藏选定单元格的边框(或使边框颜色为白色)。。默认情况下,将显示带虚线的边框。。你能帮我

您试图隐藏的选定单元格周围的虚线边框看起来是一个焦点矩形。任何给定的单元格都可以有焦点,不能同时被选中,反之亦然。如果不希望绘制此边框,请使用项委托。在那里,您可以在绘制项目之前从项目的状态中删除状态\ HasFocus样式。请参阅下面的一个关于如何做到这一点的例子,它是C++,如果你有麻烦把它转换成Python

,请告诉我。
// custom item delegate class
class NoFocusDelegate : public QStyledItemDelegate
{
protected:
    void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const;
};

void NoFocusDelegate::paint(QPainter* painter, const QStyleOptionViewItem & option, const QModelIndex &index) const
{
    QStyleOptionViewItem itemOption(option);
    if (itemOption.state & QStyle::State_HasFocus)
        itemOption.state = itemOption.state ^ QStyle::State_HasFocus;
    QStyledItemDelegate::paint(painter, itemOption, index);
}
...
// set the item delegate to your table widget
ui->tableView->setItemDelegate(new NoFocusDelegate());
希望这有帮助,我更喜欢做:

ui->tableWidget->setFocusPolicy(Qt::NoFocus);

您也可以使用“设计”选项卡更改焦点策略。

非常感谢您的回复。。自从我使用qtablewidget以来,我已经通过setFocusPolicy(QtCore.Qt.NoFocus)实现了同样的效果。。不过,我对代表们并不熟悉。。我无法推翻这个答案。。它说信誉点数必须大于15。。。。但这样做会丢失键盘导航功能