6_QMainWindow菜单栏

QMainWindow菜单栏

QWidge是一个空窗口,现在我们来了解菜单栏QMainWindow。

QWidge包括菜单栏(至多一个),工具栏,锚接部件(浮动窗口),状态栏,中心部件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S847vYwS-1671093968709)(6_QMainWindow菜单栏.assets/2022-08-12 22-46-24 的屏幕截图.png)]

ToolBar工具栏

是工具栏,父类是Widge。通常依靠在窗口边缘,但也可以在窗口内浮动

成员函数

actionAt(const QPoint &p) const
actionAt(int x, int y) const
addAction(const QString &text)
addAction(const QIcon &icon, const QString &text)
addAction(const QString &text, const QObject *receiver, const char *member)
addAction(const QIcon &icon, const QString &text, const QObject *receiver, const char *member)
addAction(const QString &text, Functor functor)
addAction(const QString &text, const QObject *context, Functor functor)
addAction(const QIcon &icon, const QString &text, Functor functor)
addAction(const QIcon &icon, const QString &text, const QObject *context, Functor functor)
addSeparator()
addWidget(QWidget *widget)
allowedAreas() const
clear()
iconSize() const
insertSeparator(QAction *before)
insertWidget(QAction *before, QWidget *widget)
isAreaAllowed(Qt::ToolBarArea area) const
isFloatable() const
isFloating() const
isMovable() const限制移动
orientation() const
setAllowedAreas(Qt::ToolBarAreas areas)限制停靠方向
setFloatable(bool floatable)限制能否以浮动窗口存在
setMovable(bool movable)
setOrientation(Qt::Orientation orientation)
toggleViewAction() const
toolButtonStyle() const
widgetForAction(QAction *action) const

排布方式

qt的枚举都是以Qt::开头的

在查找中找到QToolBar后,发现通过addToolar(枚举,toolbar_name);可以设置工具栏的停靠位置,枚举:

Qt::LeftToolBarArea
0x1
Qt::RightToolBarArea
0x2
Qt::TopToolBarArea
0x4
Qt::BottomToolBarArea
0x8
Qt::AllToolBarAreas
ToolBarArea_Mask
Qt::NoToolBarArea
0

限制停靠

通过setAllowedAreas(Qt::ToolBarAreas areas);可以限定停靠位置,枚举:

Qt::LeftToolBarArea
0x1
Qt::RightToolBarArea
0x2
Qt::TopToolBarArea
0x4
Qt::BottomToolBarArea
0x8
Qt::AllToolBarAreas
ToolBarArea_Mask
Qt::NoToolBarArea
0

StatusBar状态栏

最多有一个,单一 的部件初始化是不需要new的,而是调用一个函数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nonL3faX-1671093968711)(6_QMainWindow菜单栏.assets/2022-08-13 10-39-02 的屏幕截图.png)]

//状态栏,至多一个
QStatusBar *stBar = statusBar();
setStatusBar(stBar);

//标签控件
QLabel *label1 = new QLabel("提示信息",this);
stBar->addWidget(label1);

QLabel *label2 = new QLabel("右侧提示",this);
stBar->addPermanentWidget(label2);

铆接部件

又称浮动窗口,可添加多个。区别各类部件能否添加多个或仅有一个的标志是看部件的加入函数是addXXX()还是setXXX()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uiddS1nc-1671093968713)(6_QMainWindow菜单栏.assets/2022-08-13 10-49-29 的屏幕截图.png)]

//铆接部件(浮动窗口),可多个
QDockWIdget *dockWidget = new QDockWidget("浮动",this);
addDockWidget(Qt::BottomDockWidgetArea,dockWidget);
//设置后期停靠区域,只允许上下
dockWidget->setAllowedAreas()

//该部件的位置是围绕核心的,现在设置中心部件
QTextEdit *edit = new QTextEdit(this);
setCentralWidget(edit);

限制停靠

通过setAllowedAreas(枚举)可以限制停靠位置

Qt::LeftDockWidgetArea
0x1
Qt::RightDockWidgetArea
0x2
Qt::TopDockWidgetArea
0x4
Qt::BottomDockWidgetArea
0x8
Qt::AllDockWidgetAreas
DockWidgetArea_Mask
Qt::NoDockWidgetArea
0

实例

入门

建立一个简单的菜单栏

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hLd2ZOaJ-1671093968714)(6_QMainWindow菜单栏.assets/2022-08-12 23-44-39 的屏幕截图.png)]

//重置窗口大小
resize(600,400);


#include <QMEenBar>
//菜单栏创建  至多一个
QMenuBar * bar = menuBar();
 //菜单栏加入新窗口,此时菜单栏里没有东西,所有我们在窗口里什么也看不到
setMenuBar(bar);

 //创建菜单
QMenu *fileMenu = bar->addMenu("文件");
QMenu *editMenu = bar->addMenu("编辑");

 //创建菜单项,点击菜单后出现
QAction *newAction = fileMenu->addAction("新建");//新建一个action并赋值给一个action变量
QAction *openAction = fileMenu->addAction("打开");

 //隔离菜单项(分割线)
fileMenu->addSeparator();
fileMenu->addMenu("打开");


#include <QToolBar>
//工具栏 可以有多个
QToolBar * toolBar = new QToolBar(this);
addToolBar(toolBar);

 //设置toolbar的默认排布
addToolBar(Qt::LeftToolBarArea,toolBar);  //设置停靠方式

 //只允许左右停靠
toolBar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);

 //限制移动
toolBar->setMovable(false);

 //设置内容,菜单栏里能用的工具栏也能用
toolBar->addAction(newAction);
toolBar->addSeparator();//分割线
toolBar->addAction(openAction);

 //工具栏添加控件
QPushButton * btn = new QPushButton("aa",this);
toolBar->addWidget(btn);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PyQt6是Python编程语言的GUI工具包,可以用来创建图形用户界面。在PyQt6中,可以使用QMenuBar类来创建菜单。 要设计菜单,首先需要创建一个QMenuBar对象,然后通过addMenu()方法添加一个或多个QMenu对象到菜单中。QMenu对象可以包含多个QAction对象,每个QAction对象对应一个菜单项。 下面是一个简单的示例代码,演示如何创建一个包含两个菜单菜单: ``` import sys from PyQt6.QtWidgets import QApplication, QMainWindow, QMenuBar, QAction, QMenu class MainWindow(QMainWindow): def __init__(self): super().__init__() menubar = self.menuBar() file_menu = QMenu('File', self) new_action = QAction('New', self) file_menu.addAction(new_action) menubar.addMenu(file_menu) edit_menu = QMenu('Edit', self) cut_action = QAction('Cut', self) edit_menu.addAction(cut_action) copy_action = QAction('Copy', self) edit_menu.addAction(copy_action) paste_action = QAction('Paste', self) edit_menu.addAction(paste_action) menubar.addMenu(edit_menu) if __name__ == '__main__': app = QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec()) ``` 在这个例子中,我们创建了一个MainWindow类继承自QMainWindow类。在MainWindow的构造函数中,我们首先调用父类的构造函数,然后创建一个QMenuBar对象。接下来,我们创建两个QMenu对象:一个名为"File",另一个名为"Edit"。我们将"New"菜单项添加到"File"菜单中,将"Cut"、"Copy"和"Paste"菜单项添加到"Edit"菜单中。最后,我们将两个菜单添加到菜单中。 相关问题: 1. 如何添加子菜单? 2. 如何给菜单项添加快捷键? 3. 如何设置菜单项的状态?

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值