qtdesigner 堆叠窗口部件
时间: 2025-06-07 17:32:23 浏览: 23
### QtDesigner 中堆叠窗口部件 (QStackedWidget) 的使用方法与示例
堆叠窗口部件(QStackedWidget)是 PyQt5 和 Qt Designer 中非常重要的容器类部件,用于实现多页面的切换功能。以下将详细介绍如何在 Qt Designer 中设计和实现 QStackedWidget,并提供一个完整的代码示例。
#### 1. QStackedWidget 的基本概念
QStackedWidget 是一种容器控件,可以容纳多个窗口部件(如按钮、标签等),但每次只能显示其中一个窗口部件。通过编程控制当前显示的窗口部件,可以实现页面之间的切换[^2]。
#### 2. 在 Qt Designer 中添加 QStackedWidget
在 Qt Designer 中,可以通过以下步骤添加 QStackedWidget:
- 打开 Qt Designer 并创建一个新的窗体。
- 在左侧的“工具箱”中找到“Containers”类别下的 **QStackedWidget** 控件。
- 将其拖动到主窗体上。
- 默认情况下,QStackedWidget 已经包含两个页面(Page),每个页面都可以作为单独的窗口部件进行设计[^4]。
#### 3. 添加子窗口部件
在 QStackedWidget 的每个页面上,可以添加其他控件(如 QLabel、QPushButton 等)。这些控件将成为该页面的一部分。如果需要更多页面,可以使用 `addWidget()` 或 `insertWidget()` 方法动态添加页面[^3]。
#### 4. 动态切换页面
可以通过设置 QStackedWidget 的当前索引来切换页面。以下是实现页面切换的主要方法:
- 使用 `setCurrentIndex(index)` 方法根据索引切换页面。
- 使用 `setCurrentWidget(widget)` 方法直接指定要显示的窗口部件。
#### 5. 示例代码:基于 PyQt5 的 QStackedWidget 实现
以下是一个完整的代码示例,展示如何使用 QStackedWidget 创建一个多页面应用程序:
```python
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QStackedWidget, QPushButton, QVBoxLayout, QWidget
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 初始化 QStackedWidget
self.stacked_widget = QStackedWidget()
self.setCentralWidget(self.stacked_widget)
# 创建两个页面
page1 = QWidget()
page2 = QWidget()
# 为每个页面添加布局和控件
layout_page1 = QVBoxLayout()
layout_page2 = QVBoxLayout()
button_to_page2 = QPushButton("Go to Page 2")
button_to_page1 = QPushButton("Go to Page 1")
button_to_page2.clicked.connect(lambda: self.stacked_widget.setCurrentIndex(1))
button_to_page1.clicked.connect(lambda: self.stacked_widget.setCurrentIndex(0))
layout_page1.addWidget(button_to_page2)
layout_page2.addWidget(button_to_page1)
page1.setLayout(layout_page1)
page2.setLayout(layout_page2)
# 将页面添加到 QStackedWidget
self.stacked_widget.addWidget(page1)
self.stacked_widget.addWidget(page2)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
```
#### 6. 关键点总结
- QStackedWidget 是一种容器控件,允许在同一个区域显示多个窗口部件,但每次只能显示一个。
- 可以通过 `addWidget()` 或 `insertWidget()` 方法动态添加页面。
- 使用 `setCurrentIndex()` 或 `setCurrentWidget()` 方法实现页面切换。
---
阅读全文
相关推荐

















