65,186
社区成员




#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class QLabel;
class QScrollArea;
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
protected:
bool eventFilter(QObject *obj, QEvent *e) Q_DECL_OVERRIDE;
private:
Ui::MainWindow *ui;
QLabel *m_label;
QScrollArea *m_scrollArea;
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QLabel>
#include <QScrollArea>
#include <QWheelEvent>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
m_label = new QLabel("1111111", this);
m_scrollArea = new QScrollArea(this);
m_scrollArea->setWidget(m_label);
m_scrollArea->resize(300, 300);
m_scrollArea->installEventFilter(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
bool MainWindow::eventFilter(QObject *obj, QEvent *e)
{
if (obj != m_scrollArea){
return QMainWindow::eventFilter(obj, e);
}
if (QApplication::keyboardModifiers() == Qt::ControlModifier){
if (e->type() == QEvent::Wheel){
QWheelEvent *event = (QWheelEvent *)e;
if (event->angleDelta().y() > 0){
m_label->resize(m_label->size()*1.5);
}
else if (event->angleDelta().y() < 0){
m_label->resize(m_label->size()*0.5);
}
}
}
return QMainWindow::eventFilter(obj, e);
}