Qt开发——简易记事本制作

7 篇文章 1 订阅

嗯嗯,博主比较懒,这里不想详细说文件是怎么创建的(基本的操作可以自己看书或者百度),至于怎么打包,可以参照上一篇博文Qt开发——简易PS制作之皮一下很开心,这里我就只写代码了
第一步
头文件中添加代码:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QMenu>
#include<QTextEdit>
#include<QMenuBar>
#include<QAction>
class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();
private:
    QString fileNameString;
    bool isChanged;
    QTextEdit *text1;
    QMenu *fileMenu;//文件下拉菜单
    QAction *newFile;//新建文件。
    QAction *openFile;//打开文件。
    QAction *saveFile;//保存文件。
    QAction *quitFile;//退出。

    QMenu *editMenu;//编辑下拉菜单Qt开发——简易PS制作之皮一下很开心
    QAction *copyEdit;
    QAction *pasteEdit;
    QAction *cutEdit;
    QAction *allseleteEdit;

    QMenu *helpMenu;//帮助下拉菜单
    QAction *aboutSoftware;
    QAction *howToUse;

private slots:
    void on_new();//新建
    void on_open();//打开
    void on_save();//保存
    void on_quit();//退出
    void on_copy();//复制
    void on_paste();//粘贴
    void on_cut();//剪切
    void on_allSelect();//全选
    void on_howtoUse();//如何使用
    void on_aboutSoftware();//关于软件
    void on_changed();//改变
};

#endif // MAINWINDOW_H

第二步
头文件中代码的实现

#include "mainwindow.h"
#include<QMessageBox>
#include<QDebug>
#include<QFileDialog>
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{

    isChanged = true;
    text1=new QTextEdit;
    this->setCentralWidget(text1);

    //-------------文件下拉项------------------
    fileMenu=this->menuBar()->addMenu(u8"文件");   
    newFile=new QAction(u8"新建",this);
    newFile->setShortcut(tr("CTRL+N"));
    connect(newFile,&QAction::triggered,this,&MainWindow::on_new);
    fileMenu->addAction(newFile);//添加到显示
    openFile=new QAction(u8"打开",this);
    openFile->setShortcut(tr("CTRL+O"));
    connect(openFile,&QAction::triggered,this,&MainWindow::on_open);
    fileMenu->addAction(openFile);//添加到显示
    saveFile=new QAction(u8"保存",this);
    saveFile->setShortcut(tr("CTRL+S"));
    fileMenu->addAction(saveFile);//添加到显示
    connect(saveFile,&QAction::triggered,this,&MainWindow::on_save);
    quitFile=new QAction(u8"退出",this);
    quitFile->setShortcut(tr("CTRL+Q"));
    fileMenu->addAction(quitFile);//添加到显示
    connect(quitFile,&QAction::triggered,this,&MainWindow::on_quit);
    //-------------文件下拉项完成------------------



    //-------------编辑下拉项---------------------
    editMenu=this->menuBar()->addMenu(u8"编辑");
    copyEdit=new QAction(u8"复制",this);
    copyEdit->setShortcut(tr("CTRL+C"));    
    editMenu->addAction(copyEdit);
    connect(copyEdit,&QAction::triggered,this,&MainWindow::on_copy);
    pasteEdit=new QAction(u8"粘贴",this);
    pasteEdit->setShortcut(tr("CTRL+V"));
    editMenu->addAction(pasteEdit);
    connect(pasteEdit,&QAction::triggered,this,&MainWindow::on_paste);
    cutEdit=new QAction(u8"剪切",this);
    cutEdit->setShortcut(tr("CTRL+X"));
    editMenu->addAction(cutEdit);
    connect(cutEdit,&QAction::triggered,this,&MainWindow::on_cut);
    allseleteEdit=new QAction(u8"全选",this);
    allseleteEdit->setShortcut(tr("CTRL+A"));
    editMenu->addAction(allseleteEdit);
    connect(allseleteEdit,&QAction::triggered,this,&MainWindow::on_allSelect);
    //-------------编辑下拉项完成---------------------

    //帮助下拉项
    helpMenu=this->menuBar()->addMenu(u8"帮助");
    aboutSoftware=new QAction(u8"关于软件",this);
    helpMenu->addAction(aboutSoftware);
    connect(aboutSoftware,&QAction::triggered,this,&MainWindow::on_aboutSoftware);
    howToUse=new QAction(u8"如何使用",this);
    helpMenu->addAction(howToUse);
    connect(howToUse,&QAction::triggered,this,&MainWindow::on_howtoUse);
}
MainWindow::~MainWindow()
{

}

void MainWindow::on_new()
{
    if(isChanged)
    {
        QMessageBox::information(this,"提示","文件尚未保存");
    }
    else
    {
        text1->setText("");
    }
}

void MainWindow::on_open()
{
    if(isChanged)
    {
        QMessageBox::information(this,"提示","文件尚未保存");
    }
    else
    {
        fileNameString = QFileDialog::getOpenFileName(this,"打开");//当前窗体,打开文件的对话框的标题是:“打开”
        if(fileNameString==NULL){
            return ;
        }
        FILE *pf = fopen(fileNameString.toStdString().data(),"r+");//可读可写的方式打开。
        if(pf==NULL)
            return ;
        char buf[1024];
        QString str;
        while(!feof(pf)){
            fgets(buf,sizeof(buf),pf);
            str+=buf;
        }
        text1->setText(str);
        fclose(pf);
    }
}

void MainWindow::on_save()
{
    fileNameString = QFileDialog::getSaveFileName(this,"保存");
    if(fileNameString==NULL)
            return ;
        FILE *pf = fopen(fileNameString.toStdString().data(),"w+");
        if(pf==NULL)
            return ;

        QString str = text1->toPlainText();
        fputs(str.toStdString().data(),pf);
        fclose(pf);
        isChanged = false;
}

void MainWindow::on_quit()
{
    if(isChanged){
        QMessageBox::information(this,"提示","文件尚未保存,点击右上角×,取消保存");
    }
    else {
        this->close();
    }
}

void MainWindow::on_copy()
{
    text1->copy();
}

void MainWindow::on_paste()
{
    text1->paste();
}

void MainWindow::on_cut()
{
    text1->cut();
}

void MainWindow::on_allSelect()
{
    text1->selectAll();
}

void MainWindow::on_howtoUse()
{
    QMessageBox::information(this,"如何使用","同记事本基本相同");
}

void MainWindow::on_aboutSoftware()
{
    QMessageBox::information(this,"关于软件","Realized By : Letben");
}

void MainWindow::on_changed()
{
    isChanged=true;
}

第三步
main函数代码:

#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.resize(800,600);
    w.show();

    return a.exec();
}

都是一些基础应用,所以就不加说明,大家可以参照一下注释
最后效果是这样的在这里插入图片描述

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值