我有一个关于qt 5中自动滚动的问题。如果我只想在qtableView中禁用水平自动滚动怎么办?
预先感谢您。
我假设您正在使用小部件。
如果您不想要水平滚动条:
具有滚动功能的小部件源自QAbstractScrollArea
。
QAbstractScrollArea
具有一个函数setHorizontalScrollBarPolicy
,可用于关闭水平滚动条。您需要设置Qt::ScrollBarAlwaysOff
。
示例:
yourScrollableWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff)
如果要禁用水平滚动条,请尝试如下所述:
获取水平滚动条的对象。并致电setEnabled
。
QScrollBar *hScrollBar = yourScrollableWidget->horizontalScrollBar();
*hScrollBar->setEnabled(false);
您可以覆盖void qabstractItemview :: scrollto。对我有用的一种解决方案是以下内容:
void MyTableView::scrollTo(const QModelIndex &index, ScrollHint hint) {
int bottomMargin(2);
if (hint == QAbstractItemView::EnsureVisible &&
index.row() > indexAt(rect().topLeft()).row() &&
index.row() < indexAt(rect().bottomLeft()).row() - bottomMargin) {
return;
}
QTableView::scrollTo(index, hint);
}
您可以使用Bottommargin的值,以便在垂直方向上获得最佳自动滚动。