将QTableWidget单元格的边框设置为0px

问题描述:

如何将QTableWidget中的单元格边框设置为0px?最好我可以选择一个单元格边框的哪一侧设置为0,但我可以将它们都设置为0。将QTableWidget单元格的边框设置为0px

编辑:或者将边框设置为0px或将颜色设置为白色也不错。

您可以QTableWidget::setShowGrid禁用所有的边界,并与重新启用其中的一些一个样式表(例如:"QTableView::item { border-left: 1px solid black; }"

后者是单元格内部边框,所以它们可能不如网格对齐。

如果您想要为每个单元格单独更改边框,则需要编写代表(如在that answer中)。

检查,如果QTableWidget的的setShowGrid会为你工作,水木清华这样的:

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; 
}