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

前端之家收集整理的这篇文章主要介绍了c – Qt:创建“svg图像按钮”前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我是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&C++相关文章