有没有办法在Qt Designer中创建两个独立的布局?

时间:2020-10-29 08:03:28

标签: qt layout pyqt5 widget

我是Qt Designer的新手,所以这个问题可能很愚蠢,但我真的很困惑。

我正在使用Qt Designer和PyQt5创建一个应用程序。我的应用程序包含几个屏幕,我想通过单击按钮在它们之间切换。

第一个屏幕包括一个以垂直布局放置的按钮(button_1)和一个标签(label_1)。第二个屏幕还包含一个按钮(button_2)和一个标签(label_2),但是这些是具有不同大小和内容的不同窗口小部件。我想将button_2和label_2放置在水平布局中。

以前,我没有使用布局。我刚刚创建了一个.ui文件,并将button_2和label_2放在button_1和label_1上方。它们是重叠的,但不会影响性能,因为当显示button_1和label_1时,我使button_2和label_2不可见,反之亦然。但是现在我需要调整窗口的大小,并且需要将小部件放置在布局中。

首先想到的是创建两个单独的.ui文件,并在切换屏幕之间使用loadUi命令进行设置。但是我只需要使用一个.ui文件。这可能吗?如何创建两个独立的布局?也许还有另一种方法可以解决我的问题。非常感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

我认为在这种情况下,最好的选择是使用QStackedWidget作为标签和按钮的容器。要在Qt Designer中创建堆叠式小部件,您可以将堆叠式小部件从左侧的容器组拖动到父部件。这将创建一个包含两页的堆栈。然后可以独立设置每个页面。无论显示什么布局和添加到特定页面的小部件,只有在显示该页面时,该页面才可见。如果愿意,可以右键单击堆叠的小部件,然后从上下文菜单中选择“插入页面”。

要在Qt Designer中的页面之间导航,您可以在对象检查器的树中选择正确的窗口小部件,使用堆叠的窗口小部件右上角的两个黑色箭头,或使用堆叠的窗口小部件的上下文菜单。要在python脚本中的页面之间导航,您需要使用QStackedWidget.setCurrentIndex()