QT 学习 (添加菜单栏动作 1)

打开PC端软件有的会带有菜单栏, 如下:

记录下学习QT时 , 如何添加使用菜单栏, 在菜单栏下添加菜单项, 以及这些菜单项触发动作

过程: 在窗口添加菜单栏,然后在菜单栏添加一个 "文件" 菜单,在 "文件" 菜单下添加 "新建" 和 "打开" 选项, 点击新建 通过qDebug打印"按下新建"  点击 "打开" 打印 "按下打开"

一. 操作步骤:

(1). 添加空白菜单栏

(2). 在菜单栏中添加 "文件" 菜单

(3). 在 "文件" 菜单中添加 "新建" 和 "打开" 菜单选项 

(4). 菜单选项触发后的动作(使用信号triggered和槽连接)

二. 程序源码

源码下载:https://download.csdn.net/download/dianzishi123/10897121

1.创建一个基于QMainWindow的且不添加UI的Qt工程

工程下这些文件只需要修改两个文件 mainwindow.cpp和工程管理目录.pro文件即可

mainwindow.cpp主要实现菜单的功能; 

.pro文件主要是添加 "CONFIF += C++11" 使用Lambda表达式  实现信号和槽的匿名函数关联

  Lambda表达式  匿名函数对象
  C++11增加的新特性,  项目文件:CONFIG += C++11   Qt配合信号一起使用,非常方便
  [] 的作用是把外部的参数传进来 ;
  [=] : 把外部所有局部变量,类中所有成员以值传递方式    
  this: 类中所有成员以值传递方式    
  &: 把外部所有局部变量, 引用符号

2. mainwindow.cpp文件 ,  在构造函数中初始化菜单界面

#include "mainwindow.h"
#include <QMenuBar>//菜单栏
#include <QMenu>//菜单
#include <QAction>//动作
#include <QDebug>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    // 1. 添加菜单栏
    QMenuBar *mBar = menuBar();//返回主窗口的菜单栏。如果菜单栏不存在,此函数将创建并返回一个空菜单栏。

    // 2. 菜单栏上添加一个 "文件" 的菜单
    QMenu *pFile = mBar->addMenu("文件");

    // 3. 在文件的菜单上添加添加菜单项
    QAction *pNew = pFile->addAction("新建");//添加 "新建" 菜单项动作

    // 4. 新建菜单选项的触发动作信号和槽 使用Lambda表达式的匿名槽函数
    connect(pNew,&QAction::triggered,// "新建" 按下后的动作打印信息
            [=] ()
            {
                qDebug()<<"新建按下";
            }
            );


    pFile->addSeparator();//添加分割线
    //添加 "打开" 菜单项
    QAction *pOpen = pFile->addAction("打开");
    connect(pOpen,&QAction::triggered,
            [=] ()
            {
                qDebug()<<"打开按下";
            }
            );
}

MainWindow::~MainWindow()
{

}

3. mainwindow.h文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();
};

#endif // MAINWINDOW_H

4. main.cpp文件

#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}

5. 工程管理文件  ".pro" 文件

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = test  #生成的软件名称
TEMPLATE = app

DEFINES += QT_DEPRECATED_WARNINGS

SOURCES += \
        main.cpp \
        mainwindow.cpp

HEADERS += \
        mainwindow.h

CONFIG += C++11   #Lambda表达式

三.

1.菜单栏下有一个 "文件" 菜单, "文件" 菜单下有  "新建" 和 "打开" 两个选项

添加菜单栏动作 1: https://blog.csdn.net/dianzishi123/article/details/85854321

猜你喜欢

转载自blog.csdn.net/dianzishi123/article/details/85807079