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,可移动。
作者:
韩兆新
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
分类:
[02]Qt语言基础
标签:
Qt学习笔记
本文转自韩兆新博客博客园博客,原文链接:http://www.cnblogs.com/hanzhaoxin/archive/2012/11/24/2786283.html,如需转载请自行联系原作者