QTableView通过拖动/抓取表本身进行滚动

时间:2015-10-30 15:47:45

标签: qt qtableview

如何使QtableView在向上和向下滚动方面可拖动。没有改变它的立场。就像在pdf阅读器中使用手动工具滚动页面一样。

1 个答案:

答案 0 :(得分:0)

QScroller类可以为任何滚动小部件或图形项启用动态滚动。

QScroller *scroller = QScroller::scroller(ui->tableView);
ui->tableView->setVerticalScrollMode(QAbstractItemView::ScrollPerPixel);
ui->tableViews->setHorizontalScrollMode(QAbstractItemView::ScrollPerPixel);

您可能希望禁用滚动条的过冲策略...

QScrollerProperties properties = QScroller::scroller(scroller)->scrollerProperties();
QVariant overshootPolicy = QVariant::fromValue<QScrollerProperties::OvershootPolicy>(QScrollerProperties::OvershootAlwaysOff);
properties.setScrollMetric(QScrollerProperties::VerticalOvershootPolicy, overshootPolicy);
scroller->setScrollerProperties(properties);
properties.setScrollMetric(QScrollerProperties::HorizontalOvershootPolicy, overshootPolicy);
scroller->setScrollerProperties(properties);
//Scrolling Gesture
scroller->grabGesture(ui->tableView,QScroller::LeftMouseButtonGesture);

您可以将LeftMouseButtonGesture替换为TouchGesture用于触摸屏。