1、新建QTgui,基类选择QWidget,取消创建界面,添加资源
2、widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QSlider>
#include <QPixmap>
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = 0);
~Widget();
QWidget *canvas;
QSlider *slider;
QPixmap pixmap;
void paintEvent(QPaintEvent *);
public slots:
void setZoom(int);
private:
qreal zoom;
qreal pixels;
qreal px_width;
qreal px_height;
qreal mm_width;
qreal mm_height;
};
#endif // WIDGET_H
widget.cpp
#include "widget.h"
#include <QHBoxLayout>
#include <QDesktopWidget>
#include <QPainter>
#include <QDebug>
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
this->resize(621, 375);
QHBoxLayout *layout = new QHBoxLayout;
canvas = new QWidget;
slider = new QSlider;
slider->setMinimum(0);
slider->setMaximum(100);
slider->setValue(50);
layout->addWidget(canvas);
layout->addWidget(slider);
setLayout(layout);
if(!pixmap.load(":/resources/fish.png"))
{
qDebug() << "Fatal error: Unable to load image";
exit(-1);
}
connect(slider, SIGNAL(valueChanged(int)),
SLOT(setZoom(int)));
}
void Widget::paintEvent(QPaintEvent *event)
{
Q_UNUSED(event)
QPainter painter(this);
painter.scale(zoom, zoom);
painter.drawPixmap(0, 0, pixmap);
painter.end();
}
void Widget::setZoom(int new_zoom)
{
zoom = (qreal)(50+new_zoom) / 50;
pixels = pixmap.width() * zoom;
// QDesktopWidget desk;
// px_width = desk.width() / pixels;
// px_height = desk.height() / pixels;
// mm_width = px_width * 17.9;
// mm_height = px_height * 17.9;
qDebug() << "Zoom: " << zoom;
// qDebug() << "desk.widthMM:" << desk.widthMM();
// qDebug() << "px_width: " << px_width;
// qDebug() << "px_height: " << px_height;
// qDebug() << "mm_width: " << mm_width;
// qDebug() << "mm_height: " << mm_height;
repaint();
repaint();
}
Widget::~Widget()
{
}
---