
#include <QMenu>

#include <QAction>

#include <QMenuBar>

#include <QLabel>

#include <QWidget>

#include <QVBoxLayout>

#include <QStatusBar>

#include <QKeySequence>

#include <QMessageBox>

#include
"mainwindow.h"

MainWindow::MainWindow()

{

QWidget *widget=
new QWidget;

setCentralWidget(widget);
//设置中央Widget

infoLabel=
new QLabel(
"Choose a menu option,or right-click to invoke action");

infoLabel->setAlignment(Qt::AlignCenter);
//居中对齐

QVBoxLayout *layout=
new QVBoxLayout;

layout->addWidget(infoLabel);

widget->setLayout(layout);

createActions();

createMenus();

QString msg=
"popup a menu by right-clicking.";

statusBar()->showMessage(msg);

setWindowTitle(tr(
"Menus"));

setMinimumSize(160,160);
//设置最小尺寸

resize(480,320);
//设置尺寸

}
//创建Actions
void MainWindow::createActions()

{

newAct=
new QAction(
"&New",
this);

newAct->setShortcut(QKeySequence(
"Ctrl+N"));
//设置快捷键

newAct->setStatusTip(
"New a file");
//设置状态栏提示

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

openAct =
new QAction(
"&Open...",
this);

openAct->setShortcut(tr(
"Ctrl+O"));

openAct->setStatusTip(
"Open an existing file");

connect(openAct, SIGNAL(triggered()),
this, SLOT(openFile()));

saveAct =
new QAction(
"&Save",
this);

saveAct->setShortcut(tr(
"Ctrl+S"));

saveAct->setStatusTip(
"save the file");

connect(saveAct, SIGNAL(triggered()),
this, SLOT(saveFile()));

printAct =
new QAction(
"&Print...",
this);

printAct->setShortcut(tr(
"Ctrl+P"));

printAct->setStatusTip(
"Print the file");

connect(printAct, SIGNAL(triggered()),
this, SLOT(printFile()));

exitAct =
new QAction(
"E&xit",
this);

exitAct->setShortcut(tr(
"Ctrl+Q"));

exitAct->setStatusTip(
"Exit the Application.");

connect(exitAct, SIGNAL(triggered()),
this, SLOT(close()));

boldAct =
new QAction(tr(
"&Bold"),
this);

boldAct->setCheckable(
true);
//可选择

boldAct->setShortcut(tr(
"Ctrl+B"));

boldAct->setStatusTip(tr(
"Make the text bold"));

connect(boldAct, SIGNAL(triggered()),
this, SLOT(bold()));

QFont boldFont = boldAct->font();

boldFont.setBold(
true);
//字体加粗

boldAct->setFont(boldFont);
//设置字体

italicAct =
new QAction(tr(
"&Italic"),
this);

italicAct->setCheckable(
true);

italicAct->setShortcut(tr(
"Ctrl+I"));

italicAct->setStatusTip(tr(
"Make the text italic"));

connect(italicAct, SIGNAL(triggered()),
this, SLOT(italic()));

QFont italicFont = italicAct->font();

italicFont.setItalic(
true);
//设置倾斜

italicAct->setFont(italicFont);

aboutAct=
new QAction(
"&About",
this);

aboutAct->setStatusTip(
"About the App");

connect(aboutAct,SIGNAL(triggered()),
this,SLOT(about()));

}
//创建菜单
void MainWindow::createMenus()

{
//文件菜单

fileMenu=menuBar()->addMenu(
"&File");

fileMenu->addAction(newAct);

fileMenu->addAction(openAct);

fileMenu->addAction(saveAct);

fileMenu->addAction(printAct);

fileMenu->addSeparator();

fileMenu->addAction(exitAct);
//编辑菜单

editMenu=menuBar()->addMenu(
"&Edit");

formatMenu=editMenu->addMenu(
"&Format");

formatMenu->addAction(boldAct);

formatMenu->addAction(italicAct);
//帮助菜单

helpMenu=menuBar()->addMenu(
"&Help");

helpMenu->addAction(aboutAct);

}
void MainWindow::newFile()

{

infoLabel->setText(
"Invoke<b>File|New</b>");

}
void MainWindow::openFile()

{

infoLabel->setText(
"Invoke<b>File|Open</b>");

}
void MainWindow::saveFile()

{

infoLabel->setText(
"Invoke<b>File|Save</b>");

}
void MainWindow::printFile()

{

infoLabel->setText(
"Invoke<b>File|Print</b>");

}
//关于对话框
void MainWindow::about()

{

infoLabel->setText(
"Invoke<b>Help|About</b>");

QMessageBox::about(
this,
"About",
"How to createMenus");

}
void MainWindow::bold()

{

infoLabel->setText(
"Invoke<b>Edit|Format|bold</b>");

}
void MainWindow::italic()

{

infoLabel->setText(
"Invoke<b>Edit|Format|italic</b>");

}