C++ (Qt)QScrollBar * QAbstractScrollArea::verticalScrollBar () constQScrollBar * QAbstractScrollArea::horizontalScrollBar () const
void CTableView::mouseMoveEvent(QMouseEvent *ev){ if (isLeftButtonPressed) { int rowCount = model()->rowCount(); int rHeight = rowHeight(1); QScrollBar * vb = verticalScrollBar (); QPoint curPoint = ev->pos(); int deltaY = clickPoint.y() - curPoint.y(); vb->setValue(deltaY/rHeight); } QTableView::mouseMoveEvent(ev);}
vb->setValue(vb->value() + deltaY/rHeight);
#include <QTableView>#include <QPoint>#include <QScrollArea>#include <QScrollBar>class CTableView : public QTableView{ Q_OBJECTpublic: explicit CTableView(QWidget *parent = 0); void mouseMoveEvent(QMouseEvent *); void mousePressEvent(QMouseEvent *); void mouseReleaseEvent(QMouseEvent *event);signals: void mouseEvent ();public slots:private: bool isLeftButtonPressed; QPoint clickPoint; QScrollBar * vb;};
#include "ctableview.h"#include <QMouseEvent>//#include <QScrollBar>#include <QHeaderView>#include <QApplication>#include <QFile>#include <QDebug>CTableView::CTableView(QWidget *parent) : QTableView(parent){ isLeftButtonPressed = false; QFile file(":/html/headerTable.css"); //css file. file.open(QFile::ReadOnly); QString styleSheet = QLatin1String(file.readAll()); file.close(); setStyleSheet(QString(styleSheet)); setSelectionMode(QAbstractItemView::MultiSelection); setSelectionBehavior(QAbstractItemView::SelectRows); vb = verticalScrollBar (); vb->setSingleStep(1);}void CTableView::mouseMoveEvent(QMouseEvent *ev){ emit mouseEvent(); if (isLeftButtonPressed) { int rHeight = rowHeight(1); QPoint curPoint = ev->pos(); int deltaY = (clickPoint.y() - curPoint.y()); if ( abs(deltaY) > rHeight) { deltaY = (deltaY/rHeight); vb->setValue(vb->value() + deltaY);//deltaY/rHeight); clickPoint = ev->pos(); } } QTableView::mouseMoveEvent(ev);}void CTableView::mousePressEvent(QMouseEvent *ev){ isLeftButtonPressed = true; clickPoint = ev->pos();}void CTableView::mouseReleaseEvent(QMouseEvent *event){ isLeftButtonPressed = false;}