Ale*_*dar 13
C++: tableWidget->setFocusPolicy(Qt::NoFocus);
蟒蛇: tableWidget.setFocusPolicy(QtCore.Qt.NoFocus)
请注意,您将失去处理键盘事件的能力,但鼠标事件将正常工作.
灰色虚线边框表示该小部件具有焦点。
在小部件级别设置以下内容应该可以解决问题。
setFocusPolicy( Qt::NoFocus )
Run Code Online (Sandbox Code Playgroud)
在单元格获得焦点时,您似乎想要删除边框.
尝试按如下方式编辑样式表.
QTableWidget {
outline: 0;
}
Run Code Online (Sandbox Code Playgroud)
这对我很有用.
在不影响窗口小部件的焦点策略和使用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;
};
Run Code Online (Sandbox Code Playgroud)
*.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;
}
Run Code Online (Sandbox Code Playgroud)