当前位置: 首页 > article >正文

【Qt】05-菜单栏

做菜单

  • 前言
  • 一、创建文件
  • 二、菜单栏 QMenuBar
    • 2.1 示例代码
    • 2.2 运行结果
  • 三、工具栏 QToolBar
    • 3.1 运行代码
    • 3.2 结果分析
  • 四、状态栏 QStatusBar
    • 4.1 运行代码
    • 4.2 运行结果
  • 五、文本编辑框 QTextEdit
    • 5.1 运行代码
    • 5.2 运行结果
  • 六、浮动窗口 addDockWidget
    • 6.1 运行代码
    • 6.2 运行结果
  • 总结


前言


一、创建文件

这里和之前一样。
在这里插入图片描述
主要是后面选择,带菜单栏的窗口(PC端常用)QMainWindow在这里插入图片描述
最终在这里插入图片描述
主要是菜单栏、工具栏、状态栏、核心控件(文本编辑框)、浮动窗口

看的QMainWindow的public-functions栏可以看共有函数,是他提供的api。

二、菜单栏 QMenuBar

需要包含头文件

#include <QMenuBar>
#include <QMenu>

创建菜单
在这里插入图片描述

2.1 示例代码

过程全在注释里了,接下来是mymainwindow.cpp的内容

#include "mymainwindow.h"
#include <QMenuBar>
#include <QMenu>
#include <QAction>
#include <QDebug>
#include <QToolBar>
#include <QPushButton>

myMainWindow::myMainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    QMenuBar *mBar = menuBar();                  // 添加菜单栏
    QMenu *pFile = mBar->addMenu("文件");         // 菜单内容
    QAction *pNew = pFile->addAction("新建");     // 菜单项

    connect(pNew,&QAction::triggered,
            [=]()
            {
                qDebug()<<"新建被按下";
            }
            );
    pFile->addSeparator();                      // 增加分割线
    QAction *pOpen= pFile->addAction("打开");
}

myMainWindow::~myMainWindow()
{

}

2.2 运行结果

运行结果不展示了,放分析助于理解吧。
在这里插入图片描述

三、工具栏 QToolBar

在上一个的基础上增加,这一部分。

3.1 运行代码

在这里插入图片描述

3.2 结果分析

在这里插入图片描述

四、状态栏 QStatusBar

4.1 运行代码

在这里插入图片描述

4.2 运行结果

在这里插入图片描述

五、文本编辑框 QTextEdit

5.1 运行代码

在这里插入图片描述

5.2 运行结果

在这里插入图片描述

六、浮动窗口 addDockWidget

像这种有两种方法的,需要依赖帮助文档。
在这里插入图片描述
但是摁F1,却显示不出内容
在这里插入图片描述
需要将参数补齐,再进行跳转。

在这里插入图片描述
有点看不懂洋文。。。。。

QMainWindow::addDockWidget(Qt::DockWidgetArea area, QDockWidget *dockwidget)
  1. 第一个参数通常是指定停靠部件的位置,是一个枚举值,例如在 Qt 中,有
    Qt::LeftDockWidgetArea、Qt::RightDockWidgetArea、Qt::TopDockWidgetArea、Qt::BottomDockWidgetArea
    等,用来确定该停靠部件最初应该停靠在主窗口的哪个区域。
  2. 第二个参数是要添加的实际停靠部件的对象指针

6.1 运行代码

在这里插入图片描述

6.2 运行结果

在这里插入图片描述
在这里插入图片描述


总结

本篇总结放完整代码

#include "mymainwindow.h"
#include <QMenuBar>
#include <QMenu>
#include <QAction>
#include <QDebug>
#include <QToolBar>
#include <QPushButton>
#include <QStatusBar>
#include <QLabel>
#include <QTextEdit>
#include <QDockWidget>

myMainWindow::myMainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    QMenuBar *mBar = menuBar();                  // 添加菜单栏
    QMenu *pFile = mBar->addMenu("文件");         // 菜单内容
    QAction *pNew = pFile->addAction("新建");     // 菜单项

    connect(pNew,&QAction::triggered,
            [=]()
            {
                qDebug()<<"新建被按下";
            }
            );
    pFile->addSeparator();                      // 增加分割线
    QAction *pOpen= pFile->addAction("打开");

    // 工具栏项,菜单的快捷方式
    QToolBar *toolBar = addToolBar("toolBar");
    toolBar->addAction(pNew);           // 工具栏增加快捷方式

    QPushButton *button1 = new QPushButton(this);
    button1->setText("OHO");            // 之后可以用图片图标,目前只有颜表情代替
    // 添加小控件
    toolBar->addWidget(button1);
    connect(button1,&QPushButton::clicked,
            [=]()
            {
                button1->setText("123");
            }
            );

    // 状态栏
    QStatusBar *sBar = statusBar();
    QLabel *label = new QLabel(this);
    label->setText("Normal");
    sBar->addWidget(label);
    sBar->addWidget(new QLabel("status 2",this));   // addWidget从左往右添加
    sBar->addPermanentWidget(new QLabel("status 3",this)); // 从左往右添加

    // 核心控件--文本编辑框
    QTextEdit *textEdit = new QTextEdit(this);
    setCentralWidget(textEdit);
    // 浮动窗口
    QDockWidget *dock = new QDockWidget(this);
    addDockWidget(Qt::LeftDockWidgetArea,dock);  // 初始状态,后面是可以继续浮动的
    QTextEdit *textEdit_1 = new QTextEdit(this);    // 为浮动窗口增加一下东西
    dock->setWidget(textEdit_1);
}

myMainWindow::~myMainWindow()
{

}


http://www.kler.cn/a/518142.html

相关文章:

  • 10. SpringCloud Alibaba Sentinel 规则持久化部署详细剖析
  • 深入详解监督学习之回归与分类算法的全景视图
  • Spring Boot整合JavaMail实现邮件发送
  • springboot基于Spring Boot的智慧养老服务系统的设计与实现
  • CentOS 上安装 Go (Golang)
  • 正则表达式中常见的贪婪词
  • Nginx入门学习
  • 数据标注开源框架 Label Studio
  • 基于SpringBoot的httpclient实现(高级版)
  • Java 大视界 -- Java 大数据中的自然语言生成技术与实践(63)
  • 【JWT】jwt实现HS、RS、ES、ED签名与验签
  • 力扣算法题——283.移动零【系统讲解】
  • Kotlin开发(三):编程趣事,变量、判断和循环的三角恋
  • C++ 复习总结记录十
  • transformers报错:‘GenerationConfig‘ object has no attribute ‘_eos_token_tensor‘
  • INCOSE需求编写指南-第1部分:介绍
  • 基于Hadoop的汽车大数据分析系统设计与实现【爬虫、数据预处理、MapReduce、echarts、Flask】
  • 【GO】Context
  • 亚博microros小车-原生ubuntu支持系列:11手指控制与手势识别
  • 活动回顾和预告|微软开发者社区 Code Without Barriers 上海站首场活动成功举办!