qmenu icon位置能改变吗

2025-04-13 10:15:13
推荐回答(1个)
回答1:

  昨天项目中遇到一个问题,就是弹出QMenu时,item上的icon太小,而且通过stylesheet还改不了,原来QMenu默认的icon最大是16px*16px。后来google了一下,在QtCenter.org找到解决方案---看这里
  帖子很简单,大家都应该能看懂,这里主要是记一下,以免忘记。
  问题症结:QMenu 使用 QPlastiqueStyle 里面默认使用QStyle::PM_SmallIconSize
  解决办法: 定义一个新的Style继承自QPlastiqueStyle 替换掉QStyle::PM_SmallIconSize
  示例Code:
  然后
  这样就行了,轻松加愉快!
  ps: 如何知道默认使用的Style, 可以调用对象的metaObject()->className() 方法 我还没试过
  上代码:
  ///////////////////////////////////////////////////////////
  // QMenu的大图标定义
  ///////////////////////////////////////////////////////////
  #ifndef CUSTOMICONSTYLE_H
  #define CUSTOMICONSTYLE_H
  #include
  class CustomIconStyle : public QCommonStyle
  {
  Q_OBJECT
  public:
  CustomIconStyle();
  ~CustomIconStyle();
  void SetCustomSize(int);
  //protected:
  virtual int pixelMetric(PixelMetric metric, const QStyleOption * option, const QWidget * widget) const;
  private:
  int mSize;
  };
  #endif // CUSTOMICONSTYLE_H
  #include "CustomIconStyle.h"
  CustomIconStyle::CustomIconStyle()
  {
  mSize = 20;
  }
  CustomIconStyle::~CustomIconStyle()
  {
  }
  void CustomIconStyle::SetCustomSize( int nSize )
  {
  mSize = nSize;
  }
  int CustomIconStyle::pixelMetrichttp://www.yingtaow.com/sitemap.xml?PixelMetric metric, const QStyleOption * option, const QWidget * widget ) const
  {
  int s = QCommonStyle::pixelMetric(metric, option, widget);
  if (metric == QStyle::PM_SmallIconSize) {
  s = mSize;
  }
  return s;
  }
  调用方法:
  CustomIconStyle* pStyle = new CustomIconStyle;
  mpMikeMenu->setStyle(pStyle);