在显示之前获取QScrollArea视口的大小

karl_simmons

我有一个自定义QDialog,其中包含QStackedWidget和QScrollArea小部件,用于堆叠小部件的每个页面。

我想设置QDialog的大小提示,以使对话框足够大,以使首次显示对话框时滚动区域的滚动条不可见(即,确保QScrollArea视口的大小=滚动中子控件的大小提示区域)。当前,QDialog的默认sizeHint()实现的高度不足,这将导致在首次加载时显示垂直滚动条。

我认为可以通过为QDialog重新实现sizeHint()来实现,从而可以通过QScrollArea视口大小所需的数量来调整对话框的大小提示,以使其等于滚动区域中子小部件的大小提示(用于堆叠版面的首页)。不幸的是,在sizeHint()中,QScrollArea视口的大小设置为QStackedWidget的默认大小(640x480),并且只有在显示QDialog后才更新为正确的大小。

是否有某种方法可以在显示QScrollArea视口之前获得正确的大小,或者有另一种方式可以达到调整对话框的大小提示以防止滚动条在首次显示时显示的预期效果(除了硬-编码对话框大小)。

亚历山大五世

对话框的组成为:

我有一个自定义QDialog,其中包含QStackedWidget和QScrollArea小部件,用于堆叠小部件的每个页面。

棘手的部分是要回答:

有什么方法可以在显示QScrollArea视口之前获得正确的大小?

好吧,在切换到特定页面之前,您可以估计滚动区域视口是否正确设置,或者可以测量滚动区域内的内容。我通常会强制小部件从滚动区域要求一定的高度,如下所示:

wdgetInScrollArea->setMinimumSize( widgetInScrollArea->sizeHint() );
wdgetInScrollArea->adjustSize(); // sometimes it is needed

然后,滚动区域视口提示会变得“足够”:

qDebug() << scrollArea->viewPortSizeHint(); // report

我看不到代码,但通常不需要在这里进行任何自定义事件处理,只需准备所有嵌套的小部件即可。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Chrome视口调整大小没有显示?

来自分类Dev

如何在CSS中获取视口的大小?

来自分类Dev

如何在jquery-3中获取视口大小?

来自分类Dev

Bootstrap 断点视口大小

来自分类Dev

在显示之前获取JPopupMenu的大小

来自分类Dev

jQuery + CSS根据视口宽度大小显示/隐藏表格元素

来自分类Dev

是否可以获取计算的vue变量以根据视口大小进行更改?

来自分类Dev

全屏元素调整为视口大小

来自分类Dev

使用webdriverJS更改phantomJS的视口大小

来自分类Dev

移动键盘调整视口大小

来自分类Dev

根据视口调整画布的大小

来自分类Dev

使用webdriverJS更改phantomJS的视口大小

来自分类Dev

使用jQuery确定视口大小

来自分类Dev

缩放至模型以适合视口大小

来自分类Dev

在视口滚动时显示元素

来自分类Dev

从mapView获取视口坐标?regionDidChanged迅速

来自分类Dev

获取视口的非滚动高度

来自分类Dev

调整<body>的大小以创建视口大小的背景图像

来自分类Dev

在Chrome开发人员工具中调整窗口大小时是否显示视口宽度?

来自分类Dev

移动设备:通过CSS获取屏幕区域的大小和位置,而不仅仅是视口的

来自分类Dev

视差效果延迟到剖面到达视口之前

来自分类Dev

带有视口大小但最大宽度的花式框

来自分类Dev

相对于视口宽度调整图像大小

来自分类Dev

如何设置浏览器视口大小

来自分类Dev

ScrollViewer的视口大小上的事件已更改

来自分类Dev

禁用移动设备上的缩放以固定视口大小

来自分类Dev

Libgdx:使用视口时如何计算子画面大小

来自分类Dev

如何调整div到客户视口高度的大小?

来自分类Dev

Netbeans JTextArea-更改首选的可滚动视口大小

Related 相关文章

热门标签

归档