Установите границы ячейки QTableWidget в 0px
Как установить границы ячеек в QTableWidget в 0px? Предпочтительно я могу выбрать, какие стороны границы ячейки установить в 0, но я могу жить с установкой их всех в 0.
EDIT: либо установка границы в 0px, либо установка цвета в белый также будет хорошо.
3 ответов
Вы можете отключить все границы с QTableWidget::setShowGrid
, и включить некоторые из них в таблице стилей (например: "QTableView::item { border-left: 1px solid black; }"
)
последние являются внутренними границами ячеек, поэтому они могут быть не так выровнены, как сетка.
Если вы хотите изменить границы отдельно для каждой ячейки, вам нужно написать делегат (например, в что ответ).
проверьте, если QTableWidget это setShowGrid будет работать для вас, smth, как это:
tableWidget->setShowGrid(false);
надеюсь, это поможет, с уважением
самый простой способ сделать это для меня, не влияя на политику фокусировки виджета и используя 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;
}