QListWidget鼠标滑动,滚轮滑动
//头文件.h
#ifndef MYLISTWIDGET_H
#define MYLISTWIDGET_H
#include <QListWidget>
class MyListWidget : public QListWidget
{
Q_OBJECT
public:
MyListWidget(QWidget *parent = nullptr);
~MyListWidget();
protected:
void wheelEvent(QWheelEvent* event);
};
#endif // MYLISTWIDGET_H
//.cpp
#include "MyListWidget.h"
#include <QScroller>
#include <QWheelEvent>
#include <QScrollBar>
MyListWidget::MyListWidget(QWidget *parent)
: QListWidget(parent)
{
setViewMode(QListView::ListMode);
setFlow(QListView::TopToBottom);
setVerticalScrollMode(QAbstractItemView::ScrollPerPixel);
QScroller::grabGesture(this, QScroller::LeftMouseButtonGesture);
for(int i = 0; i < 1000; ++i)
{
addItem(new QListWidgetItem( QString::number(i)));
}
}
MyListWidget::~MyListWidget()
{
}
void MyListWidget::wheelEvent(QWheelEvent* event)
{
int degress = event->angleDelta().ry() * 0.5;
if(event->orientation() == Qt::Vertical)
verticalScrollBar()->setValue(verticalScrollBar()->value() - degress);
event->accept();
}
效果演示