Скрыть границу выделенной ячейки в qtablewidget в pyqt? - PullRequest
6 голосов
/ 13 января 2010

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

Ответы [ 2 ]

12 голосов
/ 04 ноября 2010

Я предпочитаю делать:

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

Вы также можете изменить политику фокуса, используя вкладку дизайна.

11 голосов
/ 14 января 2010

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

надеюсь, это поможет, с уважением

...