我有一个自定义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] 删除。
我来说两句