控件选择后显示虚框
当使用tab键跳转选中控件后,控件会存在虚线框,表示存在焦点,焦点的存在可以帮助我们很轻易地知道当前鼠标选择的位置;但是有时候焦点虚框的存在会很影响界面的美观。
a.简单的解决方式:
只需要添加一行代码即可:
ui.table->setFocusPolicy(Qt::NoFocus);
但是这样有个缺点,后面你想要显示选中样式的时候会显示不了。
b.重载QProxyStyle的paint函数,过滤焦点
class MyProxyStyle : public QProxyStyle
{
public:
virtual void drawPrimitive(PrimitiveElement element, const QStyleOption * option,
QPainter * painter, const QWidget * widget = 0) const
{
if (PE_FrameFocusRect == element)
{
//这里不做任何操作,Qt默认是绘制矩形虚线框
}
else
{
QProxyStyle::drawPrimitive(element, option, painter, widget);
}
}
};
m_tableError->setStyle(new MyProxyStyle);//使用
m_tableError->horizontalHeader()->setStyleSheet("QHeaderView::section{background:skyblue;color: black;}");//再使用自己的样式
整体去除
qApp->setStyle(new MyProxyStyle);
但是这样有个坏处,会导致后面的样式使用不了,可能需要其他的办法添加样式