Скрыть границу выбранной ячейки в qtablewidget в pyqt?

Есть ли способ, которым я могу скрыть границу выбранной ячейки (или сделать цвет рамки как белый) в qtablewidget.. По умолчанию границу с пунктирной линией показывают.. Может u помогать мне...

7
задан Jeba 13 January 2010 в 09:47
поделиться

1 ответ

Похоже, что эта пунктирная граница вокруг выбранной ячейки вы пытаетесь скрыть прямоугольник фокусировки. Любая данная ячейка может иметь фокус и не выбирать одновременно и наоборот. Если вы хотите, чтобы эта граница не окрашена, используйте делегат элемента. Там вы можете удалить стиль 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());

Надеюсь, что это поможет, считает

12
ответ дан 6 December 2019 в 07:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: