#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QPushButton>
#include <QGridLayout>
#include <QPoint>
#include <QString>
#include <QFrame>
#include <QWheelEvent>
#include <QDebug>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QFrame *frmBody = new QFrame(ui->m_container);
QGridLayout *bodyLayout = new QGridLayout();
for (int i = 0; i < 20; ++i) {
QPushButton *btn = new QPushButton(this);
btn->setFixedSize(120, 80);
btn->setText(QString::fromLocal8Bit("按钮%1").arg(i + 1));
bodyLayout->addWidget(btn, 0, i);
}
frmBody->setLayout(bodyLayout);
frmBody->setStyleSheet("QFrame { background-color: green; }");
frmBody->move(ui->m_container->x(), ui->m_container->y());
m_body = frmBody;
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::wheelEvent(QWheelEvent *event)
{
QPoint numPixels = event->pixelDelta();
QPoint numDegrees = event->angleDelta() / 8;
QPoint numSteps = numDegrees / 15;
int step = numSteps.y();
int nextPos = m_body->x() + step * 10;
if (nextPos < ui->m_container->width() - m_body->width()) {
nextPos = ui->m_container->width() - m_body->width();
}
if (nextPos > 0) nextPos = 0;
m_body->move(nextPos, 0);
}
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
class QFrame;
class QWheelEvent;
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
void wheelEvent(QWheelEvent *event);
private:
Ui::MainWindow *ui;
QFrame *m_body = nullptr;
};
#endif // MAINWINDOW_H
链接:https://pan.baidu.com/s/1TDs5QEettIHPK3G_xXRttg
提取码:9mdq