1.创建文件和一些贴图资源:
2.代码实现:
mainwindow.h:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QApplication>
#include <QToolBar>
#include <QAction>
#include <QTextEdit>
#include <QIcon>
#include <QMenu>
#include <QFile>
#include <QString>
#include <QMenuBar>
#include <QFileDialog>
#include <QTextStream>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
public:
void createMenus();//创建菜单
void createActions();//创建动作
void createToolBars();//创建工具栏
void loadFile(QString fileName);
public slots:
void slotNewFile();
void slotOpenFile();
void slotSaveFile();
//void slotAbout();
private:
QMenu *fileMenu;
QMenu *editMenu;
QMenu *aboutMenu;
QString fileName;
QToolBar *fileTool;
QToolBar *editTool;
QAction *fileOpenAction;
QAction *fileNewAction;
QAction *fileSaveAction;
QAction *exitAction;
QAction *cutAction;
QAction *copyAction;
QAction *pasteAction;
QAction *aboutAction;
QTextEdit *text;
};
#endif // MAINWINDOW_H
mainwindow.cpp:
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
setWindowTitle(tr("我的主窗口"));
setWindowIcon(QIcon(":/homepage.png"));
text = new QTextEdit(this);//新建一个QTextEdit对象,以主窗口为父窗口
setCentralWidget(text);//把QTextEdit作为主窗口的中央窗体
createActions();
createMenus();
createToolBars();
resize(500,500);
}
MainWindow::~MainWindow()
{
}
void MainWindow::createActions()
{
//“打开”动作
fileOpenAction = new QAction(QIcon(":/Open.png"),tr("Open"),this);
fileOpenAction->setShortcut(tr("Ctrl+O"));
fileOpenAction->setStatusTip(tr("open a file"));
connect(fileOpenAction,SIGNAL(triggered()),this,SLOT(slotOpenFile()));
//“新建”动作
fileNewAction = new QAction(QIcon(":/New.png"),tr("New"),this);
fileNewAction->setShortcut(tr("Ctrl+N"));
fileNewAction->setStatusTip(tr("new file"));
connect(fileNewAction,SIGNAL(triggered()),this,SLOT(slotNewFile()));
//“保存”动作
fileSaveAction = new QAction(QIcon(":/Save.png"),tr("Save"),this);
fileSaveAction->setShortcut(tr("Ctrl+S"));
fileSaveAction->setStatusTip(tr("save a file"));
connect(fileSaveAction,SIGNAL(activated()),this,SLOT(slotSaveFile()));
//”退出“动作
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(":/Cut.png"),tr("Cut"),this);
cutAction->setShortcut(tr("Ctrl+X"));
cutAction->setStatusTip(tr("cut to cliboard"));
connect(cutAction,SIGNAL(triggered()),text,SLOT(cut()));
//”复制“动作
copyAction = new QAction(QIcon(":/Copy.png"),tr("Copy"),this);
copyAction->setShortcut(tr("Ctrl+C"));
copyAction->setStatusTip(tr("copy a file"));
connect(copyAction,SIGNAL(triggered()),text,SLOT(copy()));
//"粘贴"动作
pasteAction = new QAction(QIcon(":/Paste.png"),tr("Paste"),this);
pasteAction->setShortcut(tr("Ctrl+V"));
pasteAction->setStatusTip(tr("paste a file"));
connect(pasteAction,SIGNAL(triggered()),text,SLOT(paste()));
//”关于“动作
aboutAction = new QAction(tr("About"),this);
connect(aboutAction,SIGNAL(triggered()),this,SLOT(slotAbout()));
}
void MainWindow::createMenus()
{
//文件菜单
fileMenu = menuBar()->addMenu(tr("文件"));
fileMenu->addAction(fileNewAction);
fileMenu->addAction(fileOpenAction);
fileMenu->addAction(fileSaveAction);
fileMenu->addAction(exitAction);
//编辑菜单
editMenu = menuBar()->addMenu(tr("编辑"));
editMenu->addAction(copyAction);
editMenu->addAction(cutAction);
editMenu->addAction(pasteAction);
//帮助菜单
aboutMenu = menuBar()->addMenu(tr("帮助"));
aboutMenu->addAction(aboutAction);
}
void MainWindow::createToolBars()
{
//文件工具栏
fileTool = addToolBar("File");
fileTool->addAction(fileNewAction);
fileTool->addAction(fileOpenAction);
fileTool->addAction(fileSaveAction);
//编辑 工具栏
editTool = addToolBar("Edit");
editTool->addAction(copyAction);
editTool->addAction(cutAction);
editTool->addAction(pasteAction);
}
void MainWindow::slotNewFile()
{
MainWindow *newWin = new MainWindow;
newWin->show();
}
void MainWindow::slotOpenFile()
{
fileName = QFileDialog::getOpenFileName(this);
if(!fileName.isEmpty())
{
if(text->document()->isEmpty())
{
loadFile(fileName);
}
else
{
MainWindow *newWin = new MainWindow;
newWin->show();
newWin->loadFile(fileName);
}
}
}
void MainWindow::loadFile(QString fileName)
{
printf("file name:%s\n",fileName.data());
QFile file(fileName);、
if(file.open(QIODevice::ReadOnly | QIODevice::Text))
{
QTextStream textStream(&file);
while(!textStream.atEnd())
{
text->append(textStream.readLine());
printf("read line.\n");
}
printf("end\n");
}
}
void MainWindow::slotSaveFile()
{
MainWindow *newWin = new MainWindow;
newWin->show();
}
/*void MainWindow::slotAbout()
{
MainWindow *newWin = new MainWindow;
newWin->show();
}*/
main.cpp:
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
3.运行效果:
有什么问题可以讨论加QQ:839505138