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>"))