Qt QTableWidget在选定单元格周围的灰色虚线边框

时间:2012-01-28 10:28:49

标签: qt qt4

我想知道是否有人知道,也许是一个标志来禁用单击QTableWidget单元格时出现的灰色虚线边框。

感谢。

6 个答案:

答案 0 :(得分:12)

C ++:tableWidget->setFocusPolicy(Qt::NoFocus);

Python:tableWidget.setFocusPolicy(QtCore.Qt.NoFocus)

请注意,您将失去处理键盘事件的能力,但鼠标事件将正常工作。

答案 1 :(得分:6)

在不影响窗口小部件焦点策略和使用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;
}

答案 2 :(得分:6)

当单元格获得焦点时,您似乎想要删除边框。

尝试按如下方式编辑样式表。

QTableWidget {
    outline: 0;
}

这对我很有用。

答案 3 :(得分:5)

qApp->setStyleSheet ( " QTableWidget::item:focus { border: 0px }" );

答案 4 :(得分:4)

灰色虚线边框表示该小部件具有焦点。

在小部件级别设置以下内容应该可以解决问题。

setFocusPolicy( Qt::NoFocus )

答案 5 :(得分:0)

QPushButton {     大纲:无; }