AFai

AFai
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

QT实现菜单栏

Posted on 2013-06-04 16:28  阿Fai  阅读(2455)  评论(0编辑  收藏  举报

环境 vs2010 QT4.8.4

1、建立QT Application程序,之后的默认即可。

2、编辑satimg.h。先给出整体代码

#ifndef SATIMG_H
#define SATIMG_H
/*
第1和第2句定义头文件包含卫哨
目的是防止重复包含头文件
这两句与结尾"#endif"42句结合在一起使用才是完整的
*/
#include <QtGui/QMainWindow>
#include "ui_satimg.h"

//前置声明
class QAction;
class QMenu;
class SatImg : public QMainWindow
{
    Q_OBJECT

public:
    SatImg(QWidget *parent = 0, Qt::WFlags flags = 0);
    ~SatImg();
    void creatMenus();
    void creatActions();

private:
    Ui::SatImgClass ui;

public slots:
    void slotOpenFile();

private:
    QMenu *menuFile;
    QAction *actionOpenFile;
};
#endif // SATIMG_H

3、前置声明

//前置声明
class QAction;
class QMenu;

4、添加函数以及槽函数.这里我建立没声明一个函数,便在satimg.cpp中将这个函数建好

public:
    void creatMenus();
    void creatActions();
public slots:
    void slotOpenFile();

5、声明菜单和动作

private:
    QMenu *menuFile;
    QAction *actionOpenFile;

6、编辑satimg.cpp。先给出整体代码。基本给出也就结束了。

#include "satimg.h"

SatImg::SatImg(QWidget *parent, Qt::WFlags flags)
    : QMainWindow(parent, flags)
{
    ui.setupUi(this);
    //UI先setupUi之后才能实现其他操作
    setWindowTitle(tr("SatImgFrame"));
    creatActions();
    creatMenus();
}

SatImg::~SatImg()
{

}

void SatImg::creatMenus()
{
    //文件菜单
    menuFile = menuBar()->addMenu(tr("File"));
    //menuFile->addAction(actionNewfile);
    menuFile->addAction(actionOpenFile);
    //menuFile->addAction(actionSaveFileSave);
    //menuFile->addAction(actionExit);
}

void SatImg::creatActions()
{
    //open file action“打开”动作
    //actionOpenFile= new QAction(QIcon(":/images/open.png"),tr("Open"),this);
    actionOpenFile= new QAction(tr("Open"),this);
    actionOpenFile->setShortcut(tr("Ctrl+O"));
    actionOpenFile->setStatusTip(tr("opena file"));
    connect(actionOpenFile,SIGNAL(triggered()),this,SLOT(slotOpenFile()));
}

void SatImg::slotOpenFile()
{
    SatImg *my=new SatImg();
    my->show();
}