#include <QApplication>
#include <QDebug>
#include <QPainter>
#include <QPrinter>
#include <QPrintPreviewWidget>
#include <QVBoxLayout>
#include <QWheelEvent>
#include <QWidget>
#include <cmath>
class PreviewWidget: public QPrintPreviewWidget {
Q_OBJECT
public:
PreviewWidget
(QWidget *parent
= 0): QPrintPreviewWidget
(parent
) { }
protected:
if (event->orientation() == Qt::Vertical && (event->modifiers() & Qt::ControlModifier)) {
double numDegrees = event->delta() / 8.0;
double numSteps = numDegrees / 15.0;
double factor = std::pow(1.125, numSteps);
zoomIn(factor);
event->accept();
}
event->ignore();
}
};
Q_OBJECT
public:
m_printPreview = new PreviewWidget(this);
layout->addWidget(m_printPreview);
connect(m_printPreview,
SIGNAL(paintRequested
(QPrinter*)),
SLOT(paintRequested
(QPrinter*)));
setLayout(layout);
resize(400, 800);
// m_printPreview->installEventFilter(this);
}
public slots:
void paintRequested
(QPrinter *printer
) { p.setFont(big);
for (int i = 0; i < 4; ++i) {
p.
drawText(300,
200,
QString::number(i
));
printer->newPage();
}
}
protected:
if (obj
== m_printPreview
&& event
->type
() == QEvent::Wheel) { QWheelEvent *wheelEvent
= static_cast<QWheelEvent
*>
(event
);
if (wheelEvent->orientation() == Qt::Vertical && (wheelEvent->modifiers() & Qt::ControlModifier)) {
double numDegrees = wheelEvent->delta() / 8.0;
double numSteps = numDegrees / 15.0;
double factor = std::pow(1.125, numSteps);
m_printPreview->zoomIn(factor);
// wheelEvent->accept();
return true;
}
// wheelEvent->ignore();
return false;
}
else {
// standard event processing
return QObject::eventFilter(obj, event
);
}
}
private:
PreviewWidget *m_printPreview;
};
int main(int argc, char *argv[]) {
Widget w;
w.show();
return a.exec();
}
#include "main.moc"
#include <QApplication>
#include <QDebug>
#include <QPainter>
#include <QPrinter>
#include <QPrintPreviewWidget>
#include <QVBoxLayout>
#include <QWheelEvent>
#include <QWidget>
#include <cmath>
class PreviewWidget: public QPrintPreviewWidget {
Q_OBJECT
public:
PreviewWidget(QWidget *parent = 0): QPrintPreviewWidget(parent) { }
protected:
void wheelEvent(QWheelEvent *event) {
if (event->orientation() == Qt::Vertical && (event->modifiers() & Qt::ControlModifier)) {
double numDegrees = event->delta() / 8.0;
double numSteps = numDegrees / 15.0;
double factor = std::pow(1.125, numSteps);
zoomIn(factor);
event->accept();
}
event->ignore();
}
};
class Widget : public QWidget {
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0): QWidget(parent) {
m_printPreview = new PreviewWidget(this);
QVBoxLayout *layout = new QVBoxLayout(this);
layout->addWidget(m_printPreview);
connect(m_printPreview, SIGNAL(paintRequested(QPrinter*)), SLOT(paintRequested(QPrinter*)));
setLayout(layout);
resize(400, 800);
// m_printPreview->installEventFilter(this);
}
public slots:
void paintRequested(QPrinter *printer) {
QPainter p(printer);
QFont big("Arial", 200);
p.setFont(big);
for (int i = 0; i < 4; ++i) {
p.drawText(300, 200, QString::number(i));
printer->newPage();
}
}
protected:
bool eventFilter(QObject *obj, QEvent *event) {
if (obj == m_printPreview && event->type() == QEvent::Wheel) {
QWheelEvent *wheelEvent = static_cast<QWheelEvent *>(event);
if (wheelEvent->orientation() == Qt::Vertical && (wheelEvent->modifiers() & Qt::ControlModifier)) {
double numDegrees = wheelEvent->delta() / 8.0;
double numSteps = numDegrees / 15.0;
double factor = std::pow(1.125, numSteps);
m_printPreview->zoomIn(factor);
// wheelEvent->accept();
return true;
}
// wheelEvent->ignore();
return false;
}
else {
// standard event processing
return QObject::eventFilter(obj, event);
}
}
private:
PreviewWidget *m_printPreview;
};
int main(int argc, char *argv[]) {
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}
#include "main.moc"
To copy to clipboard, switch view to plain text mode
Bookmarks