Remove icon space from QMenu

后端 未结 2 1539
深忆病人
深忆病人 2021-01-05 07:12

I\'m working on a Qt application (in C++). Without appyling any styles, my menu looks like this:

I\'d like it to look like this:

How do I a

2条回答
  •  小鲜肉
    小鲜肉 (楼主)
    2021-01-05 07:50

    One way to solve the problem is to use QProxyStyle:

    customstyle.h

    #ifndef CUSTOMSTYLE_H
    #define CUSTOMSTYLE_H
    #include 
    #include 
    
    class CustomStyle : public QProxyStyle{
    public:
        using QProxyStyle::QProxyStyle;
    
        void drawControl(ControlElement element, const QStyleOption *opt, QPainter *p, const QWidget *w) const override
        {
            if(element == QStyle::CE_MenuItem){
                QStyleOptionMenuItem myMenuOption;
                const QStyleOptionMenuItem *menuOption =
                        qstyleoption_cast(opt);
                if (menuOption) {
                    const int width = pixelMetric(PM_SmallIconSize)+6;
                    myMenuOption = *menuOption;
                    QRect r(myMenuOption.rect);
                    r.setLeft(-width);
                    myMenuOption.rect = r;
                }
                QProxyStyle::drawControl(element, &myMenuOption, p, w);
                return;
            }
            QProxyStyle::drawControl(element, opt, p, w);
        }
    };
    
    #endif // CUSTOMSTYLE_H
    

    then you install it in the QApplication:

    QApplication a(argc, argv);
    QApplication::setStyle(new CustomStyle);
    

提交回复
热议问题