Qt QTableWidget серая пунктирная граница вокруг выбранной ячейки - программирование
Подтвердить что ты не робот

Qt QTableWidget серая пунктирная граница вокруг выбранной ячейки

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

Спасибо.

4b9b3361

Ответ 1

Самый простой способ сделать это для меня, не затрагивая политику фокуса виджета и используя 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;
}

Ответ 2

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

Ответ 3

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

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

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

Ответ 4

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

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

setFocusPolicy( Qt::NoFocus )

Ответ 5

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

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

QTableWidget {
    outline: 0;
}

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

Ответ 6

QPushButton {   схема: нет; }