Серая пунктирная рамка Qt QTableWidget вокруг выделенной ячейки - PullRequest
15 голосов
/ 28 января 2012

Мне интересно, если кто-нибудь знает, возможно, флаг, чтобы отключить серую пунктирную границу, которая появляется, когда вы нажимаете один раз на ячейку QTableWidget.

Ответы [ 6 ]

13 голосов
/ 30 апреля 2013

C ++: tableWidget->setFocusPolicy(Qt::NoFocus);

Python: tableWidget.setFocusPolicy(QtCore.Qt.NoFocus)

Имейте в виду, что вы потеряете способность обрабатывать события клавиатуры, но события мыши будут работать нормально.

6 голосов
/ 07 декабря 2016

Кажется, что вы хотите удалить границу, когда ячейка получает фокус.

Попробуйте отредактировать таблицу стилей следующим образом.

QTableWidget {
    outline: 0;
}

Это отлично сработало для меня.

6 голосов
/ 18 ноября 2013

Самый простой способ сделать это для меня, не затрагивая политику фокуса виджета и используя qss, - создать следующий пользовательский делегат и установить его для таблицы:

* .h:

class FocusControlDelegate : public QStyledItemDelegate {
    public:
        FocusControlDelegate(QObject *parent = 0);
        virtual void initStyleOption(QStyleOptionViewItem *option, const QModelIndex &index) const;        
        void setFocusBorderEnabled(bool enabled);

    protected:
        bool f_focus_border_enabled;
    };

* .cpp:

FocusControlDelegate::FocusControlDelegate(QObject *parent) : QStyledItemDelegate(parent) {
    f_focus_border_enabled = false;
}

void FocusControlDelegate::setFocusBorderEnabled(bool enabled) {
    f_focus_border_enabled = enabled;
}

void FocusControlDelegate::initStyleOption(QStyleOptionViewItem *option, const QModelIndex &index) const {
    QStyledItemDelegate::initStyleOption(option, index);
    if(!f_focus_border_enabled && option->state & QStyle::State_HasFocus)
        option->state = option->state & ~QStyle::State_HasFocus;
}
5 голосов
/ 24 февраля 2013

qApp->setStyleSheet ( " QTableWidget::item:focus { border: 0px }" );

4 голосов
/ 17 февраля 2012

Эта серая пунктирная рамка означает, что этот виджет имеет фокус.

Настройка ниже на уровне виджета должна помочь.

setFocusPolicy( Qt::NoFocus )
0 голосов
/ 11 августа 2014

QPushButton {outline: none;}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...