如何将QTableWidget中的单元格边框设置为0px?我最好选择单元格边框的哪一边设置为0,但我也可以将它们全部设置为0。
编辑:将边框设置为0px或将颜色设置为白色也会很好。
答案 0 :(得分:11)
您可以使用QTableWidget::setShowGrid
禁用所有边框,并使用样式表重新启用其中一些边框(例如:"QTableView::item { border-left: 1px solid black; }"
)
后者是单元格内部边框,因此它们可能不像网格那样对齐。
如果要为每个单元格单独更改边框,则需要编写委托(如that answer中所示)。
答案 1 :(得分:7)
答案 2 :(得分:0)
在不影响窗口小部件焦点策略和使用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;
}