Qt 关于去除虚线框的三种方法

  1. 使用设置成setFocusPolicy(Qt::NoFocus); 这样就可以实现点击无焦点了
  2. 使用qss的方式在样式文件中添加 *{outline:0px;} 或者 qApp->setStyleSheet(“*{outline:0px;}”); 设置全局样式
  3. 使用重写QProxyStyle方式实现 :                                                                                                                                       #include <QProxyStyle>
    class NoFocusRectStyle : public QProxyStyle {
    public:
    NoFocusRectStyle(QStyle *baseStyle) : QProxyStyle(baseStyle) {}
    void drawPrimitive(PrimitiveElement element,
    const QStyleOption *option,
    QPainter *painter,
    const QWidget *widget = 0) const {
    if (element == QStyle::PE_FrameFocusRect) {//这里不做任何操作,Qt默认是绘制矩形虚线框
    return;
    }
    QProxyStyle::drawPrimitive(element, option, painter, widget);
    }
    };


    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
    NoFocusRectStyle *style = new NoFocusRectStyle(a.style());
    a.setStyle(style);
        Widget w;
        w.show();


        return a.exec();
    }
  4. 参考两位大神:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值