在 QStackedWidget 页面中调整布局大小

Posted

技术标签:

【中文标题】在 QStackedWidget 页面中调整布局大小【英文标题】:layout resizing in QStackedWidget Page 【发布时间】:2012-11-06 22:08:17 【问题描述】:

我正在尝试在 QStackedWidget 的页面上放置一个小部件,以便在父 QStackedWidget 调整大小时自动调整大小。这个简单的任务似乎不可能用 Qt Creator 来完成。向页面添加布局似乎没有任何作用,布局只是保持其设计的大小,并且不会调整大小。这是(我认为?)因为布局是作为子级添加到页面小部件中的,而不是直接附加到页面小部件。似乎没有办法实际向页面添加布局。

如何使用 Qt Creator 在 QStackedWidget 中调整小部件的大小???

作为旁注,我真的希望 Qt 放弃它的布局系统,它比基于锚定的系统更难使用。

【问题讨论】:

您使用的是 Qt3 支持小部件 (QWidgetStack) 还是新的 Qt4 小部件 (QStackedWidget)? 这是 Qt4 QStackedWidget。感谢您的提醒... 【参考方案1】:

Qt Creator 将小部件视为它们已经具有布局,您可以从设计器中小部件的上下文菜单(右键单击)或右侧的小部件列表中访问该布局。这意味着如果您想将该***布局划分为进一步的子布局,您只需将布局(从调色板中)拖放到小部件上。下图显示了此上下文菜单。

请注意右侧的小部件图标显示一个划掉的红色圆圈。这表明没有为这些小部件定义***布局。选择布局类型后,红色圆圈将消失,图标将反映您的布局选择。

在您的情况下,在主小部件上放置 QStackedWidget 后,您可以右键单击主小部件,选择“布局”并选择“水平布局”。这将使堆叠的小部件填充整个主小部件并随之调整大小。

同样,如果您将任何小部件放在“页面”小部件之一上,则可以右键单击页面小部件并为其分配***布局,这将导致这些小部件与页面小部件相应地调整大小。

【讨论】:

阿诺德,感谢您的回答。我已经为每个页面和父堆栈添加了一个布局,这已经解决了这个问题。 Qt Creator 有几个问题使得这不直观。首先,如果您在页面上的对象列表中单击鼠标右键,您根本不会得到布局子菜单——为什么不呢?要实际向页面添加布局,您必须右键单击具有正确页面集的堆栈对象,这将向页面添加布局,但此上下文菜单中的所有内容(提升、更改名称等)都表明感兴趣的对象是父栈... grrrr .... 谢谢,我通过您的回答发现,如果您仅使用 C++/Qt(没有 Qt Designer),添加布局以包含 QStackedWidget 也是强制性的。

以上是关于在 QStackedWidget 页面中调整布局大小的主要内容,如果未能解决你的问题,请参考以下文章

pyqt5快速上手基础篇6-QStackedWidget实现导航布局

Qt学习: QStackedWidget和手工代码布局的程序实例

如何将 QStackedWidget 大小设置为子小部件的最小尺寸?

如何制作不同大小的 QStackedWidget 的不同页面?

Qt QStackedWidget 调整大小问题

将没有布局的 QWidget 添加到 QStackedWidget 镶嵌间隙