Qt MenuBar自定义Icon大小

      提到QMenu中如何定制Icon的大小,第一个想到的是使用qss来修改样式,便尝试了如下语句:

QMenu::icon
{ 
    width: 24px;
    height: 24px;
}

但是经尝试,这个办法并未奏效,QMenu中图标大小,默认为16*16,是从QStyle中读取而来,我们可以通过自定义一个QStyle来实现修改图标大小,下面给出具体实现方式。

class CustomStyle : public QProxyStyle
{
    Q_OBJECT
    
public:
    virtual int pixelMetric(PixelMetric metric, const QStyleOption *option, const QWidget *widget) const
    {
        if (metric == QStyle::PM_SmallIconSize) {
            return 24;
        }  
        return QProxyStyle::pixelMetric(metric, option, widget);
    }
};

然后将自定义风格设置到QMenu上即可:

QMenu *menu = new QMenu(this);  
CustomStyle *style = new CustomStyle();  
menu->setStyle(style);

自定风格前的效果:

Qt MenuBar自定义Icon大小_第1张图片

 把Icon大小改夸张一点:

Qt MenuBar自定义Icon大小_第2张图片

 

你可能感兴趣的:(qt,qss)