Мне интересно, знает ли кто-нибудь, возможно, флаг, чтобы отключить рамку с серым пятном, которая появляется, когда вы нажимаете на ячейку QTableWidget.
Спасибо.
Мне интересно, знает ли кто-нибудь, возможно, флаг, чтобы отключить рамку с серым пятном, которая появляется, когда вы нажимаете на ячейку QTableWidget.
Спасибо.
Самый простой способ сделать это для меня, не затрагивая политику фокуса виджета и используя 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;
}
qApp->setStyleSheet ( " QTableWidget::item:focus { border: 0px }" );
С++: tableWidget->setFocusPolicy(Qt::NoFocus);
Python: tableWidget.setFocusPolicy(QtCore.Qt.NoFocus)
Помните, что вы потеряете возможность обрабатывать события клавиатуры, но события мыши будут работать нормально.
Эта серая пунктирная рамка указывает, что этот виджет имеет фокус.
Настройка ниже на уровне виджета должна выполнить трюк.
setFocusPolicy( Qt::NoFocus )
Похоже, вы хотите удалить границу, когда ячейка получит фокус.
Попробуйте отредактировать таблицу стилей следующим образом.
QTableWidget {
outline: 0;
}
Это сработало для меня отлично.
QPushButton { схема: нет; }