QT 自定义菜单栏

dialog和mainwindow

mainwindow的ui文件是默认有menubar,maintoolbar和statusbar的
dialog却没有,因此mainwindow可以直接在ui文件中进行添加,而dialog只能通过代码进行自定义菜单设置
本文主要介绍menubar和statusbar的自定义添加
在这里插入图片描述
在这里插入图片描述
mainwindow的UI界面
在这里插入图片描述

自定义menubar和statusbar

什么是菜单栏和状态栏

以下图界面为例,图片上方,组织,包含到库中,新建文件夹构成的部分就是菜单栏menubar,图片下方31个对象就是状态栏statusbar
在这里插入图片描述
菜单栏:
在这里插入图片描述
状态栏:
在这里插入图片描述

代码

主要涉及到4个类:QMenuBar、QMenu、QAction、QStatusBar

  • QMenuBar:窗口的菜单栏,在此基础上添加不同的QMenu和QAction
  • QMenu:菜单,可以显示文本和图标,但是并不负责执行操作
  • QAction: 负责执行操作的部件
  • QStatusBar:负责提示的状态栏,通常在窗口最下侧

话不多说,上代码!

//dlg.h
#include <QMenu>
#include <QMenuBar>
#include <QStatusBar>
public:
    QMenu* menu[10];
    QAction* act[10];
    QMenuBar* menuBar ;
    QStatusBar* statusBar;
    
//dlg.cpp
#include <QDebug>

Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
   
   
    ui->setupUi(this);

    statusBar = new QStatusBar(this);
    menuBar = new QMenuBar(this);</
### 创建自定义菜单栏并居中显示 为了实现在Qt应用程序中的自定义菜单栏并在窗口中心位置显示,可以采用QMenuBar组件,并通过布局管理器来控制其位置。下面是一个具体的实现方法: #### 使用 QMenuBar 和 QVBoxLayout 实现居中效果 ```python import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QMenuBar, QAction, QVBoxLayout, QWidget class MainWindow(QMainWindow): def __init__(self): super().__init__() central_widget = QWidget() layout = QVBoxLayout() menu_bar = QMenuBar(self) file_menu = menu_bar.addMenu('文件') edit_menu = menu_bar.addMenu('编辑') action_exit = QAction('退出', self) action_exit.triggered.connect(qApp.quit) file_menu.addAction(action_exit) # 将菜单栏添加到垂直布局顶部 layout.addWidget(menu_bar) # 设置伸缩因子使其他控件占据更多空间从而让菜单栏保持在视觉上的中间位置 layout.addStretch(1) central_widget.setLayout(layout) setCentralWidget(central_widget) if __name__ == '__main__': app = QApplication(sys.argv) main_window = MainWindow() main_window.setWindowTitle("Custom MenuBar Center Display") main_window.resize(800, 600) main_window.show() sys.exit(app.exec_()) ``` 这段代码展示了如何创建一个继承自`QMainWindow`的主窗口类,在其中构建了一个包含两个子项(“文件”和“编辑”)的菜单条目[^1]。 为了让菜单栏看起来像是位于整个应用窗口的正中央而不是仅仅靠上边缘对齐,这里采用了`QVBoxLayout`布局管理器配合`addStretch()`函数的方法。这样做可以让菜单栏下方留有足够的空白区域,使得它显得更加靠近屏幕中心的位置。 需要注意的是,这种方法只是视觉上的调整,并不会改变实际坐标系里菜单栏所处的具体位置;如果希望严格意义上做到几何意义上的居中,则可能需要更复杂的计算逻辑或者利用样式表来进行微调。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值