在pyqt中的qtablewidget中隐藏所选单元格的边框?

Jeb*_*eba 7 pyqt qtablewidget

有没有办法可以在qtablewidget中隐藏所选单元格的边框(或使边框颜色为白色).默认情况下会显示带虚线的边框..你可以帮我...

小智 13

我更喜欢这样做:

ui->tableWidget->setFocusPolicy(Qt::NoFocus);
Run Code Online (Sandbox Code Playgroud)

您还可以使用设计选项卡更改焦点策略.

  • .. 但这样做会失去键盘导航功能 (4认同)

ser*_*nko 12

看起来这个你想要隐藏的选定单元格周围的虚线边框是一个焦点矩形.任何给定的单元格都可以具有焦点而不能同时选择,反之亦然.如果您希望此边框不被绘制,请使用项目委托.在那里,您可以在绘制之前从项目的状态中删除State_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());
Run Code Online (Sandbox Code Playgroud)

希望这有帮助,问候

  • 非常感谢回复..我已经用setFocusPolicy(QtCore.Qt.NoFocus)实现了相同的功能,因为我已经使用过qtablewidget ..虽然我对代表不熟悉但是我不能赞成这个答案..它说声望点必须大于15 .. (2认同)