修改QMenu中的Icon大小

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

1
2
3
4
5
QMenu::icon
{
width: 24px;
height: 24px;
}

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

1
2
3
4
5
6
7
8
9
10
11
12
13
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上即可:

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