c++ - Qt:创建一个 "svg image button"

标签 c++ qt

我是 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/

相关文章:

c++ - 在 main() 之外的 Qt 中创建一个窗口?

c++ - 动态加载QTGui

arrays - Qt 数组的 GLSL 统一始终为零

c++ - 被 SIGKILL 杀死的进程

c++ - 使用成员的地址来初始化基类是否合法?

qt - 显示 QAbstractTableModel 中的图像

来自麦克风的连续语音识别 pocketsphinx

c++ - 在 C++11 中使用 max<int> 作为谓词中断

c++ - GCC:简单继承测试失败

c++ - Wt Dbo MySQL 后端连接错误 'SET storage_engine=INNODB;' : Unknown system variable 'storage_engine'