我是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() );
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建自定义小部件.我的Widget渲染自己,除非它在滚动区域内.以下代码有效.如果我在MainWindow构造函数中将if(0)更改为if(1),它将不会呈现"Hello World"字符串.我假设我必须(重新)实现一些额外的方法,但到目前为止,我无法通过反复试验找到正确的方法.
// hellowidget.h
#ifndef HELLOWIDGET_H
#define HELLOWIDGET_H
#include <QtGui>
class HelloWidget : public QWidget
{
Q_OBJECT
public:
HelloWidget(QWidget *parent = 0);
void paintEvent(QPaintEvent *event);
};
#endif // HELLOWIDGET_H
// hellowidget.cpp
#include "hellowidget.h"
HelloWidget::HelloWidget(QWidget *parent)
: QWidget(parent)
{
}
void HelloWidget::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
painter.drawText(rect(), Qt::AlignCenter, "Hello World");
}
// mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QtGui>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
private:
};
#endif // MAINWINDOW_H
// mainwindow.cpp
#include "mainwindow.h" …Run Code Online (Sandbox Code Playgroud)