设置每个项的图标大小
自定义Style修改icon大小:
#include <QProxyStyle>
class IconSizeProxyStyle : public QProxyStyle {
Q_OBJECT
public:
IconSizeProxyStyle(QStyle *style = nullptr, int iconSize = 28) :
QProxyStyle(style), m_iconSize(iconSize){};
IconSizeProxyStyle(const QString &key) :
QProxyStyle(key){};
~IconSizeProxyStyle(){};
int pixelMetric(QStyle::PixelMetric metric, const QStyleOption *option = 0, const QWidget *widget = 0) const override
{
if (metric == QStyle::PM_SmallIconSize) { return m_iconSize; }
return QProxyStyle::pixelMetric(metric, option, widget);
};
private:
int m_iconSize = 28;
};
使用:
QMenu *menu = new QMenu(this);
// 使用new的方式要注意内存泄漏
static IconSizeProxyStyle iconSizeStyle(menu->style(), 26/*图标大小*/);
menu->setStyle(&iconSizeStyle);
设置图标的位置:
设置的图标津贴左边,可以通过qss设置图标的边距:
QMenu::item{ padding-left:25px; }/* 文字的边距,不影响图标 */
QMenu::icon{ padding-left:50px; }/* 图标的边距,不影响文字 */
QMenu::icon{ subcontrol-position: center right; }/* 图标的位置 */