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

时间:2011-09-07 21:58:01

标签: qt qt4

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

编辑:将边框设置为0px或将颜色设置为白色也会很好。

3 个答案:

答案 0 :(得分:11)

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

后者是单元格内部边框,因此它们可能不像网格那样对齐。

如果要为每个单元格单独更改边框,则需要编写委托(如that answer中所示)。

答案 1 :(得分:7)

检查QTableWidget的setShowGrid是否适合您,请像这样:

tableWidget->setShowGrid(false);

希望这有帮助,尊重

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