我有2列。其中一列填充了大量QWidgets。 当我在一列拖放一个widget我调用这个方法:Qt ensureVisible()在QScrollArea中不起作用
void MainWindow::scrollToItem(Product_View *item) {
QPoint point = item->mapToParent(QPoint());
ui->scrollArea->ensureVisible(point.x(), point.y());
}
当我在第一列的底部,我的下一个拖一个小部件。 Scrollarea正确地滚动到底部,以便我可以看到我放下它的位置。
但是,当我将小部件放回到第一列时,它会滚动但不完全到底部。它的约150px(编辑:150px是不正确的,我只看到约5px的小工具)
任何人都可以帮助我吗?
编辑:
也许很高兴知道我的布局。
我有一个主窗口QScrollArea
。 scrollArea有一个QWidget
,叫做scrollAreaWidgetContents
,它有一个QHBoxLayout。 小部件有5列。而且这些对我的拖放小部件有QVBoxLayout。
哎呀ANOTHER编辑:
我注意到那就只错的最后一个项目。
我只是继续编辑
现在很清楚,我认为滚动条只是不会一路下滑。
QScrollBar *bar = ui->scrollArea->verticalScrollBar();
bar->setValue(bar->maximum());
此代码也显示相同的行为。我该怎么处理这个线程?我应该创建一个新的?
感谢您的回复。你正确的使用'ensureWidgetVisible'。但我之前做过这些,结果相同。 – HansElsen