跳转至

Breadcrumb 面包屑

显示当前页面的路径,方便用户在层次结构中快速返回上一级或某一级祖先节点。

基础用法

面包屑导航预览

from monkeyqt import MkBreadcrumb

breadcrumb = MkBreadcrumb(separator="/")

# 设置面包屑的数据项列表 # 最后一项会自动渲染为不可点击的当前项,之前的项都是可点击链接
breadcrumb.set_items([
    {"id": "home", "text": "首页"},
    {"id": "user-center", "text": "个人中心"},
    {"id": "settings", "text": "账户设置"}
])

自定义分隔符

默认分隔符为 "/",你可以传入任意字符作为分隔符(">"):

# 使用右箭头作为分隔符
breadcrumb = MkBreadcrumb(separator=">")

API 属性与方法

MkBreadcrumb 构造函数 &

MkBreadcrumb(separator="/", parent=None)
参数 类型 默认值 说明
separator str "/" 面包屑节点之间的分隔符文本

核心方法

方法名 参数 返回值 说明
set_items(items) list None 设置面包屑内容。items 的每一项必须是字典,格式为 {"id": str, "text": str}。最后一个元素会自动被当作当前页面(不可点击,深色显示)

信号

信号名称 参数 说明
itemClicked (str) 当面包屑的祖先节点被点击时发射该信号,参数为对应节点的 id

示例代码

import sys
from PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout, QLabel
from monkeyqt import MkBreadcrumb

class BreadcrumbDemo(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("Breadcrumb Demo")
        self.resize(500, 150)

        layout = QVBoxLayout(self)
        layout.setSpacing(20)

        # 1. 默认斜杠分隔的面包屑
        self.breadcrumb_1 = MkBreadcrumb()
        self.breadcrumb_1.set_items([
            {"id": "index", "text": "首页"},
            {"id": "system", "text": "系统设置"},
            {"id": "logs", "text": "操作日志"}
        ])
        layout.addWidget(self.breadcrumb_1)

        # 2. 自定义右箭头分隔符        self.breadcrumb_2 = MkBreadcrumb(separator=">")
        self.breadcrumb_2.set_items([
            {"id": "home", "text": "Home"},
            {"id": "components", "text": "Components"},
            {"id": "navigation", "text": "Navigation"},
            {"id": "breadcrumb", "text": "Breadcrumb"}
        ])
        layout.addWidget(self.breadcrumb_2)

        # 状态指示标签        self.status_label = QLabel("点击面包屑节点查看输出" ))
        self.status_label.setStyleSheet("color: #909399; font-size: 13px;")
        layout.addWidget(self.status_label)

        # 绑定信号
        self.breadcrumb_1.itemClicked.connect(self._on_item_clicked)
        self.breadcrumb_2.itemClicked.connect(self._on_item_clicked)

    def _on_item_clicked(self, node_id):
        self.status_label.setText(f"点击了节点 ID: {node_id}")

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = BreadcrumbDemo()
    window.show()
    sys.exit(app.exec())