<a href="http://images.cnblogs.com/cnblogs_com/hanzhaoxin/201211/201211242020422783.png"></a>
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QtGui>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = 0, Qt::WFlags flags = 0);
~MainWindow();
void createMenus(); //创建菜单
void createActions(); //创建动作
void createToolBars(); //创建工具栏
public slots:
void sl_NewFile();
void sl_OpenFile();
void sl_SaveFile();
void sl_About();
protected:
void loadFile(QString);
private:
QMenu *fileMenu;
QMenu *editMenu;
QMenu *aboutMenu;
QToolBar *fileTool;
QToolBar *editTool;
QAction *fileOpenAction;
QAction *fileNewAction;
QAction *fileSaveAction;
QAction *exitAction;
QAction *copyAction;
QAction *cutAction;
QAction *pasteAction;
QAction *aboutAction;
QTextEdit *edtText;
};
#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"
#include <QTextStream>
#include <QFile>
MainWindow::MainWindow(QWidget *parent, Qt::WFlags flags)
: QMainWindow(parent, flags)
setWindowTitle(tr("QMainWindow"));
edtText = new QTextEdit(this);
setCentralWidget(edtText);
createActions();
createMenus();
createToolBars();
}
MainWindow::~MainWindow()
void MainWindow::createActions()
//"打开"动作
fileOpenAction = new QAction(QIcon("images/open.png"),tr("Open"),this);
fileOpenAction->setShortcut(tr("Ctrl+0"));
fileOpenAction->setStatusTip(tr("open a file"));
connect(fileOpenAction,SIGNAL(triggered()),this,SLOT(sl_OpenFile()));
//"新建"动作
fileNewAction = new QAction(QIcon("images/new.png"),tr("New"),this);
fileNewAction->setShortcut(tr("Ctrl+N"));
fileNewAction->setStatusTip(tr("new file"));
connect(fileNewAction,SIGNAL(triggered()),this,SLOT(sl_NewFile()));
//"保存"动作
fileSaveAction = new QAction(QIcon("images/save.png"),tr("Save"),this);
fileSaveAction->setShortcut(tr("Ctrl+S"));
fileSaveAction->setStatusTip(tr("save file"));
connect(fileSaveAction,SIGNAL(activated()),this,SLOT(sl_SaveFile()));
//"退出"动作
exitAction = new QAction(tr("Exit"),this);
exitAction->setShortcut(tr("Ctrl+Q"));
exitAction->setStatusTip(tr("exit"));
connect(exitAction,SIGNAL(triggered()),this,SLOT(close()));
//"剪切"动作
cutAction = new QAction(QIcon("images/cut.png"),tr("cut"),this);
cutAction->setShortcut(tr("Ctrl+X"));
cutAction->setStatusTip("cut to clipboard");
connect(cutAction,SIGNAL(triggered()),this,SLOT(cut()));
//"复制"动作
copyAction = new QAction(QIcon("images/copy.png"),tr("copy"),this);
copyAction->setShortcut(tr("Ctrl+C"));
copyAction->setStatusTip("copy to clipboard");
connect(copyAction,SIGNAL(triggered()),this,SLOT(copy()));
//"粘贴"动作
pasteAction = new QAction(QIcon("images/paste.png"),tr("paste"),this);
pasteAction->setShortcut(tr("Ctrl+V"));
pasteAction->setStatusTip("paste clipboard to selection");
connect(pasteAction,SIGNAL(triggered()),this,SLOT(paste()));
//"关于"动作
aboutAction = new QAction(tr("About"),this);
connect(aboutAction,SIGNAL(triggered()),this,SLOT(sl_About()));
void MainWindow::createMenus()
//文件菜单
fileMenu = menuBar()->addMenu(tr("File"));
fileMenu->addAction(fileNewAction);
fileMenu->addAction(fileOpenAction);
fileMenu->addAction(fileSaveAction);
fileMenu->addSeparator();
fileMenu->addAction(exitAction);
//编辑菜单
editMenu = menuBar()->addMenu(tr("Edit"));
editMenu->addAction(copyAction);
editMenu->addAction(cutAction);
editMenu->addAction(pasteAction);
//帮助菜单
aboutMenu = menuBar()->addMenu(tr("Help"));
aboutMenu->addAction(aboutAction);
void MainWindow::createToolBars()
//文件工具栏
fileTool = addToolBar("File");
fileTool->addAction(fileNewAction);
fileTool->addAction(fileOpenAction);
fileTool->addAction(fileSaveAction);
fileTool->setAllowedAreas(Qt::TopToolBarArea | Qt::LeftToolBarArea);
fileTool->setMovable(false);
//编辑工具栏
editTool = addToolBar("Edit");
editTool->addAction(copyAction);
editTool->addAction(cutAction);
editTool->addAction(pasteAction);
void MainWindow::sl_NewFile()
MainWindow *newWin = new MainWindow;
newWin->show();
void MainWindow::sl_OpenFile()
QString fileName = QFileDialog::getOpenFileName(this);
if(!fileName.isEmpty())
{
if(edtText->document()->isEmpty())
{
loadFile(fileName);
}
else
MainWindow *newWin = new MainWindow;
newWin->show();
newWin->loadFile(fileName);
}
void MainWindow::sl_SaveFile()
void MainWindow::sl_About()
void MainWindow::loadFile(QString fileName)
QFile file(fileName);
if(file.open(QIODevice::ReadOnly | QIODevice::Text))
QTextStream textStream(&file);
while (!textStream.atEnd())
edtText->append(textStream.readLine());
工具条是一个可移动的窗口,它可停靠的区域由QToolBar的allowAreas()函数决定的,它的参数包括:
Qt::LeftToolBarArea、Qt::RightToolBarArea、Qt::TopToolBarArea、Qt::BottomToolBarArea、Qt::AllToolBarArea.
(默认为Qt::AllToolBarArea,启动时默认出现于主窗口的顶部)。
setMovable()函数确定工具条的可移动性。默认参数为true,可移动。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
本文转自韩兆新博客博客园博客,原文链接:http://www.cnblogs.com/hanzhaoxin/archive/2012/11/24/2786283.html,如需转载请自行联系原作者