gpt4 book ai didi

Qt EnsureVisible() 在 QScrollArea 中不起作用

转载 作者:行者123 更新时间:2023-12-04 05:15:50 27 4
gpt4 key购买 nike

我有 2 列。其中一列充满了许多 QWidget。当我将一个小部件放入列中时,我调用此方法:

void MainWindow::scrollToItem(Product_View *item) {
QPoint point = item->mapToParent(QPoint());
ui->scrollArea->ensureVisible(point.x(), point.y());
}

当我位于第一列的底部时,我将一个小部件拖动到下一列中。滚动区域正确滚动到底部,以便我可以看到我把它放在哪里。

但是当我将小部件放回第一列时,它会滚动但不会完全滚动到底部。它的大小约为 150px(编辑:150px 不正确。我只看到 Widget 的大约 5px)

有人可以帮我吗?

编辑:

也许很高兴了解我的布局。

我有一个带有QScrollArea的主窗口。scrollArea 有一个名为 scrollAreaWidgetContentsQWidget 并且它有一个 QHBoxLayout。该小部件有 5 列。这些有 QVBoxLayout 用于我的拖放小部件。

天哪,另一次编辑:

我注意到只有最后一项出了问题。

我只是继续编辑

现在我很清楚滚动条并没有一直向下。

QScrollBar *bar = ui->scrollArea->verticalScrollBar();
bar->setValue(bar->maximum());

此代码也显示了相同的行为。我应该用这个线程做什么?我应该创建一个新的吗?

最佳答案

ensureVisible函数只需要一个点,因此使用它只能保证小部件的一个角可见(我相信是左上角?)。尝试使用ensureWidgetVisible相反 - 这应该确保整个小部件都显示在屏幕上。

希望有帮助!

关于Qt EnsureVisible() 在 QScrollArea 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14292976/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com