我是 Qt 的新手,所以请原谅我的无知。
我正在尝试使用 QSizePolicy::Preferred 为水平和垂直创建一个“svg 图像按钮”。 那部分有效。调整窗口大小时,按钮会按照我想要的方式增长和缩小......但按钮内的图像保持相同大小。 我希望图像随按钮缩放。我试图重载 resizeEvent,并调用 setImageSize,但那会无限递归。
#ifndef SVGPUSHBUTTON_H
#define SVGPUSHBUTTON_H
#include <QtGui>
class SVGPushButton : public QPushButton
{
public:
SVGPushButton(QString path, QString name = "");
~SVGPushButton();
void resizeEvent(QResizeEvent * event);
private:
};
#endif // SVGPUSHBUTTON_H
#include "SVGPushButton.h"
SVGPushButton::SVGPushButton(QString svgPath, QString name)
: QPushButton(name)
{
QIcon icon(svgPath);
setSizePolicy( QSizePolicy::Preferred, QSizePolicy::Preferred );
setFlat(true);
setIcon(icon);
}
SVGPushButton::~SVGPushButton()
{}
void SVGPushButton::resizeEvent(QResizeEvent * event)
{
setIconSize( event->size() );
}
最佳答案
我最终是这样解决的:
SVGPushButton::SVGPushButton(QString svgPath, QString name)
: QPushButton()
{
setSizePolicy( QSizePolicy::Preferred, QSizePolicy::Preferred );
QSvgWidget *icon = new QSvgWidget(svgPath,this);
setLayout( new QHBoxLayout(this) );
layout()->addWidget( icon );
}
关于c++ - Qt:创建一个 "svg image button",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/815581/