Qt Creator:DirMainWindow(对文件的操作)

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值