qt 使用QListWidget实现界面切换功能
时间: 2023-11-22 14:51:54 浏览: 232
Qt下使用ListWidget
5星 · 资源好评率100%
可以使用 `QStackedWidget` 和 `QListWidget` 实现界面切换功能。
1. 首先,在 Qt Designer 中创建一个 `QStackedWidget` 和一个 `QListWidget`,将 `QListWidget` 放置在需要显示菜单的位置上,将 `QStackedWidget` 放置在需要显示页面的位置上。
2. 在 `QListWidget` 中添加菜单项,并设置相应的文本和图标。
3. 在 `QStackedWidget` 中添加页面,并设置相应的 UI 界面。
4. 编写槽函数,用于响应 `QListWidget` 中菜单项的点击事件,并切换到相应的页面。
以下是示例代码:
```python
from PyQt5.QtWidgets import QApplication, QMainWindow, QListWidget, QStackedWidget, QWidget, QVBoxLayout, QLabel, QPushButton
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 创建 QListWidget 和 QStackedWidget
self.list_widget = QListWidget()
self.stack_widget = QStackedWidget()
# 添加菜单项
self.list_widget.addItem("Page 1")
self.list_widget.addItem("Page 2")
self.list_widget.addItem("Page 3")
# 添加页面
page1 = QWidget()
layout1 = QVBoxLayout()
label1 = QLabel("This is Page 1")
button1 = QPushButton("Go to Page 2")
button1.clicked.connect(lambda: self.stack_widget.setCurrentIndex(1))
layout1.addWidget(label1)
layout1.addWidget(button1)
page1.setLayout(layout1)
self.stack_widget.addWidget(page1)
page2 = QWidget()
layout2 = QVBoxLayout()
label2 = QLabel("This is Page 2")
button2 = QPushButton("Go to Page 3")
button2.clicked.connect(lambda: self.stack_widget.setCurrentIndex(2))
layout2.addWidget(label2)
layout2.addWidget(button2)
page2.setLayout(layout2)
self.stack_widget.addWidget(page2)
page3 = QWidget()
layout3 = QVBoxLayout()
label3 = QLabel("This is Page 3")
button3 = QPushButton("Go to Page 1")
button3.clicked.connect(lambda: self.stack_widget.setCurrentIndex(0))
layout3.addWidget(label3)
layout3.addWidget(button3)
page3.setLayout(layout3)
self.stack_widget.addWidget(page3)
# 设置 QMainWindow 的 centralWidget
central_widget = QWidget()
central_layout = QHBoxLayout()
central_layout.addWidget(self.list_widget)
central_layout.addWidget(self.stack_widget)
central_widget.setLayout(central_layout)
self.setCentralWidget(central_widget)
# 连接 QListWidget 和 QStackedWidget
self.list_widget.currentRowChanged.connect(self.stack_widget.setCurrentIndex)
if __name__ == "__main__":
app = QApplication([])
window = MainWindow()
window.show()
app.exec_()
```
在上述示例代码中,我们在 QMainWindow 中添加了一个 `QListWidget` 和一个 `QStackedWidget`,并且在 `QListWidget` 中添加了三个菜单项,在 `QStackedWidget` 中添加了三个页面。我们通过 `setCurrentIndex` 方法切换页面,并且连接了 `currentRowChanged` 信号,以便在 `QListWidget` 中点击菜单项时,自动切换到相应的页面。
阅读全文