Qt菜单栏的制作

来源:互联网 发布:财付通软件下载 编辑:程序博客网 时间:2024/04/28 19:57

窗口的中菜单栏,工具条,状态栏等都是在QMainWindow的类中设置的,QMainWindow继承了了QWidget类。

如果想要在窗口中加入菜单栏,工具条等,就要定义一个继承QMainWindow的类。

#include <QMenu>

#include <QAction>

#include <QMainWindow>

#include <QToolBar>

#include "MainBoard.h"

 

class MyMainWindow:public QMainWindow //继承了QMainWindow

{

Q_OBJECT

public:

MyMainWindow();

void creatAction();

void creatMenu();

void creatToolbar();

private:

QMenu *Game, *Options, *Help;

QAction *newgame, *quitgame, *fight, *start, *pause, *jumpover;

QAction *gamehelp, *aboutgame, *setting;

QtoolBar *toolbar;

MainBoard *mainboard;

public slots:

};

 

MyMainWindow::MyMainWindow()

{

mainboard = new MainBoard; //这个是窗口中的主体部件

setCentralWidget(mainboard); //加入这个部件

creatAction(); //创建Action

creatMenu(); //创建菜单

creatToolbar();   //创建工具栏

}

 

void MyMainWindow::creatAction()

{

newgame = new QAction("&New Game",this);

newgame -> setIcon(QIcon("newgame.png"));

newgame -> setShortcut(QKeySequence::New);

connect(newgame,SIGNAL(triggered()),mainboard,SIGNAL(restartSIG()));

 

void MyMainWindow::creatMenu()

{

Game = menuBar() -> addMenu("&Game");

Game -> addAction(newgame);

 

Void MyMainWindow::creatToolbar()

{

    toolbar = addToolBar(“&Game”);

    toolbar -> addAction(newgame);

    toolbar -> addSeparator();

}

 

 

分析:

QAction是创建动作

QMenu 是创建菜单

可以把Action加入到Menu,也可以把Action加入到工具栏。

 

newgame = new QAction("&New Game",this);

“&New Game”是Action的名称,一定要加&, this也一定要加上

 

newgame -> setIcon(QIcon("newgame.png"));

这个设置图标,格式为.png

 

newgame -> setShortcut(QKeySequence::New);

设置快捷键,在QKeySequence中有一个表,列出所有的快捷键,想用哪个快捷键,就把前面的名称加到:: 后面

 

connect(newgame,SIGNAL(triggered()),mainboard,SIGNAL(restartSIG()));

这个Action的动作,发出一个triggered信号。

 

创建菜单:

Game = menuBar() -> addMenu("&Game");

Game -> addAction(newgame);

 

在qt中,菜单(Menu)被认为是QMenu类的实例。本例中,addMenu()函数利用其实参字符串创建一个QMenu控件并将其添加至菜单栏。QMainWindow::menuBar()函数返回一个指向QMenuBar的指针,首次调用menuBar()函数时创建菜单栏。

要向菜单中加入Action,用addAction();

 

创建工具栏用QToolBar,与创建菜单栏非常相似

Toolbar = addToolBar(“&Game”);

Toolbar -> addAction(negame);

创建工具栏,加入Action

 

Toolbar -> addSeparator();

工具栏可以加分割线

原创粉丝点击