Qt自绘菜单栏和工具栏

用到的头文件

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

QMenu *fileMenu, *editMenu, *helpMenu;  //定义三个菜单选项  
QToolBar *fileToolBar, *editToolBar;//两个工具栏
QAction *newAct, *cutAct, *copyAct, *pasteAct, *aboutQtAct;//五个动作
void newFileSlot();//一个槽函数,对应打开动作

.cpp文件

    fileMenu = new QMenu(this);
    editMenu = new QMenu(this);
    helpMenu = new QMenu(this);
    //填充菜单子节点
    newAct = new QAction(QIcon( ":/images/new" ), tr( "new" ), this );
    newAct->setShortcut(tr("Ctrl+N" ));
    newAct->setStatusTip(tr("newFile" ));
    connect(newAct, SIGNAL(triggered()), this, SLOT(newFile()));
    cutAct = new QAction(QIcon( ":/images/cut" ), tr( "cut" ), this );
    cutAct->setShortcut(tr("Ctrl+X" ));
    cutAct->setStatusTip(tr("cutContent" ));
    copyAct = new QAction(QIcon( ":/images/copy" ), tr( "copy" ), this );
    copyAct->setShortcut(tr("Ctrl+C" ));
    copyAct->setStatusTip(tr("copyContent" ));
    pasteAct = new QAction(QIcon( ":/images/paste" ), tr( "paste" ), this );
    pasteAct->setShortcut(tr("Ctrl+V" ));
    pasteAct->setStatusTip(tr("pasteContent" ));
    aboutQtAct = new QAction(tr( "about Qt" ), this );
    aboutQtAct->setStatusTip(tr("about Qt information" ));
 
    //填充菜单
    fileMenu = menuBar()->addMenu(tr( "file" ));
    fileMenu->addAction(newAct);
    fileMenu->addSeparator();
    editMenu = menuBar()->addMenu(tr("edit" ));
    editMenu->addAction(cutAct);
    editMenu->addAction(copyAct);
    editMenu->addAction(pasteAct);
    menuBar()->addSeparator();
    helpMenu = menuBar()->addMenu(tr("help" ));
    helpMenu->addAction(aboutQtAct);
    //toolBar 工具条
    fileToolBar = addToolBar(tr("create"));
    fileToolBar->addAction(newAct);
    editToolBar = addToolBar(tr("change"));
    editToolBar->addAction(cutAct);
    editToolBar->addAction(copyAct);
    editToolBar->addAction(pasteAct);
    connect(aboutQtAct, SIGNAL(triggered()), qApp, SLOT(aboutQt()));
    connect(newAct, &QAction::triggered, this, &MainWindow::newFileSlot);

槽函数定义:

//子菜单事件
void MainWindow::newFileSlot()
{
    QMessageBox::warning(this,tr("Warning"),tr("Do you want to create new file?"),QMessageBox::Yes | QMessageBox::Default,QMessageBox::No);
}

猜你喜欢

转载自blog.csdn.net/qiukapi/article/details/86536522
今日推荐