QT菜单制作

来源:互联网 发布:linux下vim配置 编辑:程序博客网 时间:2024/06/04 00:29
窗口的中菜单栏,工具条,状态栏等都是在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();
工具栏可以加分割线
0 0
原创粉丝点击