将QTableWidget单元格的边框设置为0px
问题描述:
如何将QTableWidget中的单元格边框设置为0px?最好我可以选择一个单元格边框的哪一侧设置为0,但我可以将它们都设置为0。将QTableWidget单元格的边框设置为0px
编辑:或者将边框设置为0px或将颜色设置为白色也不错。
答
您可以QTableWidget::setShowGrid
禁用所有的边界,并与重新启用其中的一些一个样式表(例如:"QTableView::item { border-left: 1px solid black; }"
)
后者是单元格内部边框,所以它们可能不如网格对齐。
如果您想要为每个单元格单独更改边框,则需要编写代表(如在that answer中)。
答
这样做对我没有影响部件的焦点策略和使用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;
}