¿Oculta el borde de la celda seleccionada en qtablewidget en pyqt?
pyqt table view (2)
Parece que este borde punteado alrededor de la celda seleccionada que intenta ocultar es un rectángulo de enfoque. Cualquier celda dada puede tener foco y no ser seleccionada al mismo tiempo y viceversa. Si desea que este borde no se pinte utilice un elemento delegado. Allí puede eliminar el estilo State_HasFocus del estado del elemento antes de pintarlo. Pls, mira un ejemplo a continuación sobre cómo hacer esto, es c ++, avísame si tienes problemas para convertirlo a 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 esto ayude, saludos
¿Hay alguna manera de ocultar el borde de la celda seleccionada (o hacer que el color del borde sea blanco) en un qtablewidget? De manera predeterminada, se muestra un borde con línea punteada. ¿Me pueden ayudar?
Prefiero hacer:
ui->tableWidget->setFocusPolicy(Qt::NoFocus);
También puede cambiar la política de enfoque utilizando la pestaña de diseño.