首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QScrollArea Qt5的仿真滚动

QScrollArea Qt5的仿真滚动
EN

Stack Overflow用户
提问于 2018-01-26 04:38:51
回答 1查看 256关注 0票数 1

我有以下问题:我有QScrollArea,里面有很多QToolButtons。QToolButtons是通过工作动态创建的,并按如下方式添加:

代码语言:javascript
复制
QToolButton* btn = new QToolButton(ui.previewList);
btn->setCheckable(TRUE);
ui.buttonsLayout->removeItem(ui.buttonsSpacer);
ui.buttonsLayout->addWidget(btn);
ui.buttonsLayout->addItem(ui.buttonsSpacer);

有时,我需要从我的程序中滚动QScrollArea,以确保某个按钮的可见性,或者,当添加一个按钮时,需要滚动最后一个按钮,在那里我会遇到问题。

  1. Ui.previewList->(Btn)根本不会做任何事情。也许这是因为btn不是previewList的子代,而是VBoxLayout的子代。
  2. 当我试图滚动到最后时,上面所有的变体都会导致滚动,所以最后一个按钮(我需要是可见的)就在屏幕外,虽然我检查了调试,但是我首先添加了按钮并调用了主窗体的更新,然后我才用滚动输入函数。也许我应该做些什么来迫使QScrollArea重新计算它的内容和滚动条限制? scrlbar = ui.previewList->verticalScrollBar();int max = scrlbar->maximum();//变体1 scrlbar->setValue(最大);scrlbar->triggerAction(QAbstractSlider::SliderMove);//变体2 scrlbar->setValue(max + ui.previewList->verticalScrollBar()->pageStep());scrlbar->triggerAction(QAbstractSlider::SliderMove);/变体3 scrlbar->triggerAction(QAbstractSlider::SliderToMaximum);)

那么,在这种情况下处理QScrollArea的正确方法是什么呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-31 05:43:42

好的。以下是这个问题的答案。

  1. 为了使ensureItemVisible工作,我只需要将layoutSizeConstraint设置为SetMinAndMaxSize (是的,它是用qt文档编写的,所以我可以自己说rtfm )。
  2. 要滚动到最大的QApplication::processEvents()是必需的,谢谢@SteakOverflow的想法。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48455870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档