QT-功能-实现简单的菜单栏操作

用几个控件实现简单的菜单栏操作(类记事本的上的菜单栏)

1.新建一个有ui界面的工程,其基类为mainwindow

2.向工程文件中添加资源文件,用以存放图片在这里插入图片描述

3.代码实现

mainwindow.h

新添加如下头文件

#include <QMenu>
#include <QMenuBar>
#include <QAction>
#include <QToolBar>

class类中新建菜单定义

private:

    //新建
    QMenu *fileMenu, *editMenu, *helpMenu;
    QToolBar *fileToolBar;			//新建两个工具栏,用以存放四个菜单动作
    QToolBar *editToolBar;        
    QAction *newAct;
    QAction *cutAct;
    QAction *copyAct;
    QAction *pasteAct;
    QAction *aboutQtAct;
    
private slots:
    void newFile();					//实例一个简单的槽

mainwindow.cpp

构造函数中添加如下代码实现

	//实例菜单
    fileMenu = new QMenu(this);
    editMenu = new QMenu(this);
    helpMenu = new QMenu(this);

    //填充菜单子节点
    newAct = new QAction(QIcon( ":/images/file/new.png" ), tr( "新建" ), this );
    newAct->setShortcut(tr("Ctrl+N" ));        //快捷键
    newAct->setStatusTip(tr("新建文件" ));      //状态提示

    connect(newAct, SIGNAL(triggered()), this, SLOT(newFile()));

    cutAct = new QAction(QIcon( ":/images/file/cut.png" ), tr( "剪切" ), this );
    cutAct->setShortcut(tr("Ctrl+X" ));
    cutAct->setStatusTip(tr("剪切内容" ));
    copyAct = new QAction(QIcon( ":/images/file/复制.png" ), tr( "复制" ), this );
    copyAct->setShortcut(tr("Ctrl+C" ));
    copyAct->setStatusTip(tr("复制内容" ));
    pasteAct = new QAction(QIcon( ":/images/file/粘贴.png" ), tr( "粘贴" ), this );
    pasteAct->setShortcut(tr("Ctrl+V" ));
    pasteAct->setStatusTip(tr("粘贴内容" ));
    aboutQtAct = new QAction(QIcon(":/images/file/about.png"),tr( "关于 Qt" ), this );
    aboutQtAct->setStatusTip(tr("关于 Qt 信息" ));

    connect(aboutQtAct, SIGNAL(triggered()), qApp, SLOT(aboutQt()));

    //填充菜单
    fileMenu = menuBar()->addMenu(tr( "文件" ));
    fileMenu->addAction(newAct);
    fileMenu->addSeparator();
    editMenu = menuBar()->addMenu(tr("编辑" ));
    editMenu->addAction(cutAct);
    editMenu->addAction(copyAct);
    editMenu->addAction(pasteAct);
    menuBar()->addSeparator();
    helpMenu = menuBar()->addMenu(tr("帮助" ));
    helpMenu->addAction(aboutQtAct);
    //toolBar 工具条
    //fileTooBar添加
    fileToolBar = addToolBar(tr("新建"));
    fileToolBar->addAction(newAct);
    //editToolBar添加
    editToolBar = addToolBar(tr("修改"));
    editToolBar->addAction(cutAct);
    editToolBar->addAction(copyAct);
    editToolBar->addAction(pasteAct);

}

MainWindow::~MainWindow()
{
    delete ui;
}

//子菜单事件
void MainWindow::newFile()
{
    QMessageBox::warning(this,tr("Warning"),
    tr("创建新文件?"),
    QMessageBox::Yes | QMessageBox::Default,
    QMessageBox::No);
}

4.效果展示

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

5.待改进之处

1.部分信号写的太简单,后期可以做成一个系统的记事本的功能

发布了43 篇原创文章 · 获赞 7 · 访问量 9044

猜你喜欢

转载自blog.csdn.net/qq_41488943/article/details/96480133