self.list_widget = QListWidget() # 创建一个列表
self.stacked_widget = QStackedWidget() # 创建一个堆叠面板
# 可以通过添加到 QHboxHayout 或 QVboxLayout 左右或者上下显示,通过设置属性可以很实用
self.pages = {}
# 通过一个字典来存储堆叠面板
general_page = GeneralSettingsPage(self) # 页面也可以有父控件
self.pages["基础设置"] = general_page
self.stacked_widget.addWidget(general_page)
self.list_widget.addItem("基础设置") # 在左侧列表添加一个基础设置的选项
self.list_widget.currentItemChanged.connect(self._change_stacked_widget_page)
# 当左侧列表的选中项变化的时候执行 _change_stacked_widget_page 函数 执行时会携带两个参数 current_item: 当前被选中的 QListWidgetItem 对象, previous_item: 之前被选中的 QListWidgetItem 对象。
def _change_stacked_widget_page(self, current_item: QListWidgetItem, previous_item: QListWidgetItem):
if current_item is not None:
page_name = current_item.text() # 获取改变后的选项的文本
page_widget = self.pages.get(page_name) # 从字典中找到对应选项的堆叠面板
if page_widget:
self.stacked_widget.setCurrentWidget(page_widget)
print(f"切换到页面: {page_name}")
class GeneralSettingsPage(QWidget):
# 堆叠面板继承自QWidget,基本可以通用
def init_page_ui(self):
layout = QVBoxLayout(self)
layout.setAlignment(Qt.AlignmentFlag.AlignTop | Qt.AlignmentFlag.AlignLeft)
layout.setContentsMargins(20, 20, 20, 20)
account = QHBoxLayout()
account.addStretch(1)
account.addWidget(QLabel("<b>cookie设置</b>"))