我该如何将QTableWidget中的单元格边框设置为0px?最好能够选择哪些边的单元格边框设置为0,但如果所有边框都设置为0也可以。编辑:将边框设置为0px或将颜色设置为白色都可以。
QTableWidget::setShowGrid
禁用所有边框,然后通过样式表重新启用其中的一些(例如: "QTableView::item { border-left: 1px solid black; }"
)。 后者是单元格内部边框,因此与网格对齐可能不那么好。对我来说,最简单的方法是创建以下自定义委托并将其安装到表格中,而不影响小部件的焦点策略并使用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;
}