跳转至

Topbar 顶部导航栏

基础用法

顶部导航栏预览

from monkeyqt import MkTopbar

# 创建顶部导航栏并设置 LOGO
topbar = MkTopbar(logo_text="monkeyqt")

# 添加导航菜单项topbar.add_item("home", "首页")
topbar.add_item("docs", "文档")
topbar.add_item("plugins", "插件市场")

# 设置默认激活项
topbar.set_active("home")

API 属性与方法

MkTopbar 构造函数 &

MkTopbar(logo_text="LOGO", parent=None)
参数 类型 默认值 说明
logo_text str "LOGO" 左侧展示的 Logo 文字,传 None 或空字符串可隐藏 Logo

核心方法

方法名 参数 返回值 说明
add_item(item_id, text) (str, str) MkTopbarItem 在顶部添加一个一级菜单项
set_active(item_id) (str) None 代码层面设置某项为当前激活项(底部呈现蓝色高亮线)

信号

信号名称 参数 说明
itemClicked (str) 点击导航项时发射,返回被点击项的 item_id

示例代码

以下示例展示了 MkTopbar 如何与多页面组件(如 QStackedWidget)配合使用:

import sys
from PySide6.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget, QLabel, QStackedWidget
from monkeyqt import MkTopbar

class TopbarDemo(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("MkTopbar Demo")
        self.resize(800, 500)

        # 主页面容器        main_widget = QWidget()
        self.setCentralWidget(main_widget)

        layout = QVBoxLayout(main_widget)
        layout.setContentsMargins(0, 0, 0, 0)
        layout.setSpacing(0)

        # 1. 创建顶部导航栏        self.topbar = MkTopbar(logo_text="Monkey Qt")
        layout.addWidget(self.topbar)

        # 2. 内容区域
        self.stacked_widget = QStackedWidget()
        layout.addWidget(self.stacked_widget, stretch=1)

        # 添加不同的页面内容        self.page_home = QLabel("欢迎来到首页")
        self.page_docs = QLabel("这是开发文档页面" ))
        self.page_about = QLabel("关于我们")

        for page in [self.page_home, self.page_docs, self.page_about]:
            page.setStyleSheet("font-size: 24px; font-weight: bold; qproperty-alignment: AlignCenter;")
            self.stacked_widget.addWidget(page)

        # 3. 往导航栏添加项目        self.topbar.add_item("home", "首页")
        self.topbar.add_item("docs", "文档")
        self.topbar.add_item("about", "关于")

        # 绑定切换页面信号
        self.topbar.itemClicked.connect(self._on_topbar_clicked)

        # 默认选中第一页        self.topbar.set_active("home")

    def _on_topbar_clicked(self, item_id):
        if item_id == "home":
            self.stacked_widget.setCurrentWidget(self.page_home)
        elif item_id == "docs":
            self.stacked_widget.setCurrentWidget(self.page_docs)
        elif item_id == "about":
            self.stacked_widget.setCurrentWidget(self.page_about)

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