2012-01-28 372 views
11

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

谢谢。

+3

可能的重复:http://stackoverflow.com/questions/2055705/hide-the-border-of-the-selected-cell-in-qtablewidget-in-pyqt – 2012-01-28 14:38:50

回答

3

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

在小部件级别设置下面的内容应该有所斩获。

setFocusPolicy(Qt::NoFocus) 
5

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

+1

差不多。但如果我们使用替代背景颜色,它会将选择背景颜色更改为替代背景颜色。添加此修复程序QTableWidget :: item:focus {border:0px;背景颜色:#<你的选择背景颜色>}' – swdev 2014-05-23 00:11:47

5

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

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

要知道,你将失去处理键盘事件的能力,但鼠标事件将正常工作。

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

完美的作品,非常感谢你 – 2018-02-16 08:23:00

-1

QPushButton { 纲要:无; }

3

看起来好像你想在单元格获得焦点时删除边框。

尝试编辑样式表,如下所示。

QTableWidget { 
    outline: 0; 
} 

这对我来说非常合适。

+0

真正简单的答案 – 2018-02-23 20:18:06