在QT5中禁用水平自动滚动

  • 本文关键字:滚动 水平 QT5 qt qt5
  • 更新时间 :
  • 英文 :


我有一个关于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的值,以便在垂直方向上获得最佳自动滚动。

相关内容

  • 没有找到相关文章

最新更新