QMainWindow添加工具栏

 Code:

#include <QToolBar>
#include <QAction>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    //创建工具栏
    QToolBar* tb_01 = new QToolBar(this);
    QToolBar* tb_02 = new QToolBar(this);
    //添加工具栏到窗口
    //位置有LeftToolBarArea、RightToolBarArea、TopToolBarArea、BottomToolBarArea
    //分别表示左右上下
    this->addToolBar(Qt::LeftToolBarArea, tb_01);
    this->addToolBar(Qt::RightToolBarArea, tb_02);
    //创建行为
    QAction* act_03 = new QAction("事\n事\n如\n意");
    QAction* act_04 = new QAction("恭\n喜\n发\n财");
    //添加行为到工具栏
    tb_01->addAction(act_03);
    tb_02->addAction(act_04);
}

实现效果:

<think>我们参考上述引用内容,来回答用户的问题:如何在PyQt5的QMainWindow添加菜单栏、状态栏和工具栏。 根据引用,我们知道: 1. 菜单栏使用QMenuBar类,通常位于主窗口顶部。 2. 工具栏使用QToolBar类,可以拖动或停靠。 3. 状态栏使用QStatusBar类,位于主窗口底部。 步骤: 1. 菜单栏(QMenuBar): - 通过`menuBar()`方法获取主窗口的菜单栏(如果没有则创建一个)。 - 然后使用`addMenu`方法添加菜单(如“文件”菜单),再在菜单中添加动作(QAction)。 2. 工具栏QToolBar): - 使用`addToolBar`方法创建工具栏。 - 然后使用`addAction`方法将动作添加工具栏。 3. 状态栏(QStatusBar): - 使用`statusBar()`方法获取主窗口的状态栏(如果没有则创建一个)。 - 使用`showMessage`方法显示临时消息,或添加永久部件。 注意:在Mac OS上,菜单栏可能显示在屏幕顶部,如果想使用应用程序内的菜单栏,可以设置`setNativeMenuBar(False)`。 下面是一个示例代码,演示如何添加菜单栏、工具栏和状态栏:</think>### PyQt5 QMainWindow 添加菜单栏、状态栏和工具栏 在 PyQt5 中,`QMainWindow` 提供了标准应用程序框架的组件支持。以下是添加三要素的完整方法: #### 1. 添加菜单栏 (QMenuBar) ```python # 获取主窗口菜单栏(不存在则自动创建) menubar = self.menuBar() # 创建顶级菜单 file_menu = menubar.addMenu('文件(&F)') # &F 表示Alt+F快捷键 # 创建菜单动作 exit_action = QAction(QIcon('exit.png'), '退出(&X)', self) exit_action.setShortcut('Ctrl+Q') # 设置快捷键 exit_action.setStatusTip('退出程序') # 状态栏提示 exit_action.triggered.connect(qApp.quit) # 绑定事件 # 添加动作到菜单 file_menu.addAction(exit_action) # 创建子菜单(可选) import_menu = QMenu('导入', self) import_action = QAction('从CSV', self) import_menu.addAction(import_action) file_menu.addMenu(import_menu) # 添加到父菜单 ``` [^1][^2][^5] #### 2. 添加工具栏 (QToolBar) ```python # 创建工具栏 toolbar = self.addToolBar('主工具栏') # 添加工具动作(可复用菜单栏的action) new_action = QAction(QIcon('new.png'), '新建', self) toolbar.addAction(new_action) # 添加分隔符 toolbar.addSeparator() # 添加自定义控件(如按钮) save_btn = QPushButton(QIcon('save.png'), '保存') save_btn.clicked.connect(self.save_file) toolbar.addWidget(save_btn) # 设置工具栏特性 toolbar.setMovable(True) # 允许拖动 toolbar.setToolButtonStyle(Qt.ToolButtonTextUnderIcon) # 图标+文字 ``` [^3][^4] #### 3. 添加状态栏 (QStatusBar) ```python # 获取状态栏(不存在则自动创建) statusbar = self.statusBar() # 显示临时消息(5秒后消失) statusbar.showMessage('准备就绪', 5000) # 添加永久部件(右侧显示) self.file_size_label = QLabel('0 KB') statusbar.addPermanentWidget(self.file_size_label) # 添加进度条(动态更新) self.progress_bar = QProgressBar() statusbar.addWidget(self.progress_bar, 1) # 拉伸系数为1 ``` [^1][^3] #### 完整代码框架 ```python import sys from PyQt5.QtWidgets import * from PyQt5.QtGui import * from PyQt5.QtCore import Qt class MainWindow(QMainWindow): def __init__(self): super().__init__() self.initUI() def initUI(self): # 添加菜单栏 menubar = self.menuBar() file_menu = menubar.addMenu('文件(&F)') # ... 添加菜单动作 # 添加工具栏 toolbar = self.addToolBar('工具') # ... 添加工具动作 # 添加状态栏 statusbar = self.statusBar() statusbar.showMessage('程序已启动') # 窗口设置 self.setGeometry(300, 300, 800, 600) self.setWindowTitle('PyQt5主窗口示例') self.show() if __name__ == '__main__': app = QApplication(sys.argv) ex = MainWindow() sys.exit(app.exec_()) ``` **关键要点**: 1. 菜单栏通过 `menuBar()` 获取,使用 `addMenu()` 创建层级菜单 2. 工具栏通过 `addToolBar()` 创建,支持添加动作和自定义控件 3. 状态栏通过 `statusBar()` 获取,支持临时消息和永久部件 4. 所有组件共享 `QAction` 实现功能复用 5. Mac系统需 `menubar.setNativeMenuBar(False)` 显示程序内菜单栏[^2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值