c – Qt:创建“svg图像按钮”

前端之家收集整理的这篇文章主要介绍了c – Qt:创建“svg图像按钮”前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我是QT的新手所以请原谅我的无知.

我正在尝试使用QSizePolicy :: Preferred为水平和垂直创建一个’svg图像按钮’.
那部分有效.调整窗口大小时,按钮会按照我想要的方式增长和缩小…但按钮内的图像保持相同的大小.
我想用按钮缩放图像.我试图重载resizeEvent,并调用setImageSize,但是无限递归.

  1. #ifndef SVGPUSHBUTTON_H
  2. #define SVGPUSHBUTTON_H
  3.  
  4. #include <QtGui>
  5.  
  6. class SVGPushButton : public QPushButton
  7. {
  8. public:
  9. SVGPushButton(QString path,QString name = "");
  10. ~SVGPushButton();
  11.  
  12. void resizeEvent(QResizeEvent * event);
  13. private:
  14. };
  15.  
  16. #endif // SVGPUSHBUTTON_H
  17.  
  18. #include "SVGPushButton.h"
  19.  
  20. SVGPushButton::SVGPushButton(QString svgPath,QString name)
  21. : QPushButton(name)
  22. {
  23. QIcon icon(svgPath);
  24. setSizePolicy( QSizePolicy::Preferred,QSizePolicy::Preferred );
  25. setFlat(true);
  26. setIcon(icon);
  27. }
  28.  
  29. SVGPushButton::~SVGPushButton()
  30. {}
  31.  
  32. void SVGPushButton::resizeEvent(QResizeEvent * event)
  33. {
  34. setIconSize( event->size() );
  35. }

解决方法

这就是我最终解决它的方式:
  1. SVGPushButton::SVGPushButton(QString svgPath,QString name)
  2. : QPushButton()
  3. {
  4. setSizePolicy( QSizePolicy::Preferred,QSizePolicy::Preferred );
  5. QSvgWidget *icon = new QSvgWidget(svgPath,this);
  6. setLayout( new QHBoxLayout(this) );
  7. layout()->addWidget( icon );
  8. }

猜你在找的C&C++相关文章