Domanda

C'è un modo per nascondere il bordo della cella selezionata (o fare il colore del bordo di bianco) in un qtablewidget .. Per impostazione predefinita un bordo con la linea tratteggiata è mostrato .. u mi può aiutare ...

È stato utile?

Soluzione

Sembra che questa frontiera tratteggiata attorno cella si sta cercando di nascondere selezionato è un rettangolo di attivazione. Qualsiasi cella può avere attenzione e non essere selezionato contemporaneamente e viceversa. Se si desidera che questo confine non per ottenere l'uso dipinto un delegato elemento. C'è possibile rimuovere lo stile State_HasFocus dallo stato della voce prima di dipingerla. Pls, vedere un esempio qui sotto su come fare questo, è C ++, fatemi sapere se avete problemi convertendolo in 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());

Spero che questo aiuti, saluti

Altri suggerimenti

Io preferisco fare:

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

È inoltre possibile modificare la politica di messa a fuoco utilizzando la scheda di progettazione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top