Pergunta

Existe uma maneira de ocultar a borda da célula selecionada (ou fazer a cor da borda branca) em um qtablewidget .. por padrão, uma borda com linha pontilhada é mostrada .. você pode me ajudar ...

Foi útil?

Solução

Parece que essa borda pontilhada em torno da célula selecionada que você está tentando esconder é um retângulo de foco. Qualquer célula determinada pode ter foco e não ser selecionada ao mesmo tempo e vice-versa. Se você deseja que essa borda não seja pintada, use um delegado de item. Lá você pode remover o estilo state_hasfocus do estado do item antes de pintá -lo. Por favor, veja um exemplo abaixo sobre como fazer isso, é C ++, deixe -me saber se você tiver problemas para convertê -lo em 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());

Espero que isso ajude, considerando

Outras dicas

Eu prefiro fazer:

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

Você também pode alterar a política de foco usando a guia Design.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top