//main.cpp
#include <QWheelEvent>
#include <QMainWindow>
#include <QApplication>
#include <QGraphicsView>
#include <QGraphicsScene>
{
Q_OBJECT
public:
h11(1.0), h12(0), h21(0), h22(1.0) {}
protected:
private:
qreal h11;
qreal h12;
qreal h21;
qreal h22;
};
{
if(qApp->keyboardModifiers() & Qt::ControlModifier)
{
const int degrees = event->delta() / 8;
int steps = degrees / 15;
double scaleFactor = 1.0;
const qreal minFactor = 1.0;
const qreal maxFactor = 10.0;
if(steps > 0)
{
h11 = (h11 >= maxFactor) ? h11 : (h11 + scaleFactor);
h22 = (h22 >= maxFactor) ? h22 : (h22 + scaleFactor);
}
else
{
h11 = (h11 <= minFactor) ? minFactor : (h11 - scaleFactor);
h22 = (h22 <= minFactor) ? minFactor : (h22 - scaleFactor);
}
setTransformationAnchor(AnchorUnderMouse);
setTransform(QTransform(h11, h12, h21, h22, 0, 0));
}
else
{
}
}
int main(int argc, char *argv[])
{
QColor colors
[] = {Qt
::red, Qt
::blue, Qt
::black, Qt
::green, Qt
::yellow };
int color = 0;
pen.setWidth(4);
for(int i = 0; i < 2000; i += 150)
{
for(int j = 0; j < 2000; j += 150)
{
pen.setColor(colors[color++ % 5]);
scene->addRect(i, j, 100, 100, pen);
scene->addEllipse(i, j, 100, 100, pen);
}
}
view->setScene(scene);
mainWindow.setCentralWidget(view);
mainWindow.showMaximized();
return a.exec();
}
#include "main.moc"
//main.cpp
#include <QWheelEvent>
#include <QMainWindow>
#include <QApplication>
#include <QGraphicsView>
#include <QGraphicsScene>
class View : public QGraphicsView
{
Q_OBJECT
public:
explicit View(QWidget *parent) : QGraphicsView(parent),
h11(1.0), h12(0), h21(0), h22(1.0) {}
protected:
void wheelEvent(QWheelEvent *event);
private:
qreal h11;
qreal h12;
qreal h21;
qreal h22;
};
void View::wheelEvent(QWheelEvent *event)
{
if(qApp->keyboardModifiers() & Qt::ControlModifier)
{
const int degrees = event->delta() / 8;
int steps = degrees / 15;
double scaleFactor = 1.0;
const qreal minFactor = 1.0;
const qreal maxFactor = 10.0;
if(steps > 0)
{
h11 = (h11 >= maxFactor) ? h11 : (h11 + scaleFactor);
h22 = (h22 >= maxFactor) ? h22 : (h22 + scaleFactor);
}
else
{
h11 = (h11 <= minFactor) ? minFactor : (h11 - scaleFactor);
h22 = (h22 <= minFactor) ? minFactor : (h22 - scaleFactor);
}
setTransformationAnchor(AnchorUnderMouse);
setTransform(QTransform(h11, h12, h21, h22, 0, 0));
}
else
{
QGraphicsView::wheelEvent(event);
}
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QMainWindow mainWindow;
QColor colors[] = {Qt::red, Qt::blue, Qt::black, Qt::green, Qt::yellow };
int color = 0;
QGraphicsView *view = new View(&mainWindow);
QGraphicsScene *scene = new QGraphicsScene(&mainWindow);
QPen pen;
pen.setWidth(4);
for(int i = 0; i < 2000; i += 150)
{
for(int j = 0; j < 2000; j += 150)
{
pen.setColor(colors[color++ % 5]);
scene->addRect(i, j, 100, 100, pen);
scene->addEllipse(i, j, 100, 100, pen);
}
}
view->setScene(scene);
mainWindow.setCentralWidget(view);
mainWindow.showMaximized();
return a.exec();
}
#include "main.moc"
To copy to clipboard, switch view to plain text mode
Bookmarks