我正在使用Qt为多页文档构建视图。我将每个页面绘制到一个单独的QLabel小部件,就像在ImageViewer示例应用程序中一样。
使用QVBoxLayout垂直组织QLabel。这一切都很好用,页面之间有一点灰色边缘。
我现在想要的是,当用户向下翻页时,移动滚动以使特定QLabel的顶部出现在窗口的顶部。 “确保”功能可能会这样做,但我不会立即看到如何。
有人做过这样的事吗?
答案 0 :(得分:3)
如果子窗口小部件较高,则视口高度ensureWidgetVisible
会滚动到窗口小部件的中间。
如果您需要滚动到小部件的顶部,可以通过一些计算轻松完成:
//childWidget - QLabel you want to move to
//area - QScrollArea
// calculate childWidget position in coordinates of the viewport
const QPoint p = childWidget->mapTo(area, QPoint(0,0));
// move scroll bar
area->verticalScrollBar()->setValue(p.y() + area->verticalScrollBar()->value());