Icon in QActions
-
Hi
One way is to use a proxy style. Do notice it might not work well with stylesheets.
fast example:
#include <QProxyStyle> #include <QStyleOptionMenuItem> 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<const QStyleOptionMenuItem *>(opt); if (menuOption) { const int width = pixelMetric(PM_SmallIconSize); myMenuOption = *menuOption; QRect r(myMenuOption.rect); r.setLeft( (r.width() / 2) - (width / 2) ); myMenuOption.rect = r; } QProxyStyle::drawControl(element, &myMenuOption, p, w); return; } QProxyStyle::drawControl(element, opt, p, w); } }; ... (in cpp) ui->menuFile->setStyle(new CustomStyle);
