QT编写---------文本编辑器

源代码如下:

main.cpp Source Code:

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


int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MyMenu w;
    w.show();


    return a.exec();

}

mymenu.h Source Code:

#ifndef MYMENU_H
#define MYMENU_H


#include <QMainWindow>
#include <QMessageBox>
#include <QtDebug>
#include <QFile>
#include <QFontDialog>
#include <QFont>
#include <QColor>
#include <QColorDialog>
#include <QDateTime>


namespace Ui {
class MyMenu;
}


class MyMenu : public QMainWindow
{
    Q_OBJECT


public:
    explicit MyMenu(QWidget *parent = 0);
    ~MyMenu();


private:
    Ui::MyMenu *ui;
    QString saveFileName;
private slots:
    void newFileSlot();
    void openFileSlot();//打开一个已存在的文本文件
    void saveFileSlot();//保存文本文件
    void saveAsFileSlot();//另存为文本文件
    void printFileSlot();//打印文件
    void ExitSlot();//退出程式
    void setFontSlot();//设置字体
    void setColorSlot();//设置字体颜色
    void currentDateTimeSlot();//获取当前的系统时间,并采用一定格式打印出来
};


#endif // MYMENU_H

mymenu.cpp Source Code:

#include "mymenu.h"
#include "ui_mymenu.h"
#include <QWidget>
#include <QObject>
#include <QFile>
#include <QFileDevice>
#include <QFileDialog>
#include <QDir>
#include <QTextStream>




MyMenu::MyMenu(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MyMenu)
{
    ui->setupUi(this);
    this->setMaximumSize(1301,801);//设置固定窗体最大化
    this->setMinimumSize(1301,801);//设置固定窗体最小化
    this->setWindowTitle("Untitled ---notepad");//设置窗体名称
    //File menu
    QObject::connect(ui->action_N_Ctrl_N,SIGNAL(triggered()),this,SLOT(newFileSlot()));//执行新建菜单项
    QObject::connect(ui->action_O_Ctrl_O,SIGNAL(triggered()),this,SLOT(openFileSlot()));//执行开打菜单项
    QObject::connect(ui->action_S_Ctrl_S_2,SIGNAL(triggered()),this,SLOT(ExitSlot()));//执行退出菜单项
    QObject::connect(ui->action_A_Ctrl_A,SIGNAL(triggered()),this,SLOT(saveAsFileSlot()));//执行另存为菜单
    QObject::connect(ui->action_S_Ctrl_S,SIGNAL(triggered()),this,SLOT(saveFileSlot()));//执行保存菜单项
    //TOOL menu
    QObject::connect(ui->action_F,SIGNAL(triggered()),this,SLOT(setFontSlot()));//设置字体
    QObject::connect(ui->action_C,SIGNAL(triggered()),this,SLOT(setColorSlot()));//设置颜色
    QObject::connect(ui->action_D_F5,SIGNAL(triggered()),this,SLOT(currentDateTimeSlot()));//获取当前时间
    //edit menu
    QObject::connect(ui->action_U_Ctrl_Z,SIGNAL(triggered()),ui->textEdit,SLOT(undo()));//撤消
    QObject::connect(ui->action_T_Ctrl_X,SIGNAL(triggered()),ui->textEdit,SLOT(cut()));//剪切
    QObject::connect(ui->action_C_Ctrl_C,SIGNAL(triggered()),ui->textEdit,SLOT(copy()));//复制
    QObject::connect(ui->action_P_Ctrl_V,SIGNAL(triggered()),ui->textEdit,SLOT(paste()));//粘贴
    QObject::connect(ui->action_L_Ctrl_L,SIGNAL(triggered()),ui->textEdit,SLOT(clear()));//删除
    QObject::connect(ui->action_A_Ctrl_A_2,SIGNAL(triggered()),ui->textEdit,SLOT(selectAll()));//全选
}


MyMenu::~MyMenu()
{
    delete ui;
}


void MyMenu::newFileSlot()
{
    //如果当前文档的内容已经改变了
    if(ui->textEdit->document()->isModified())
    {
        //qDebug()<<"current file modified ";




    }
    else
    {
        //qDebug()<<"not modified";
        ui->textEdit->clear();
        this->setWindowTitle("Untitled.txt -------------huiwensiban");
    }
}


void MyMenu::openFileSlot()
{
    QString fileName=QFileDialog::getOpenFileName(this,"Open File",QDir::currentPath());
    //qDebug()<<"fileName is "<<fileName;
    if(fileName.isEmpty())//is Null
    {
        QMessageBox::information(this,"Error Message","Please Select Text File Name");
        return;
    }
    QFile *file=new QFile;
    file->setFileName(fileName);
    bool ok=file->open(QIODevice::ReadOnly);
    if(ok)
    {
        QTextStream in(file);
        ui->textEdit->setText(in.readAll());//read all context from this file text Edit
        this->setWindowTitle(fileName);
        file->close();
        delete file;
    }
    else
    {
        QMessageBox::information(this,"Error Message","File Open Error");
    }
}


void MyMenu::ExitSlot()
{
    this->close();
}


void MyMenu::saveFileSlot()
{
    if(saveFileName.isEmpty())
    {
        this->saveAsFileSlot();
    }
    else
    {
        QFile * file=new QFile;
        file->setFileName(saveFileName);
        bool ok=file->open(QIODevice::WriteOnly);
        if(ok)
        {
            QTextStream out(file);
            out<<ui->textEdit->toPlainText();//这里是去除textEdit当中的纯文本信息
            file->close();
            this->setWindowTitle(saveFileName+"-----------notepad");
            delete file;
        }
        else
        {
            QMessageBox::information(this,"Error Message","Save File Error");
            return;
        }


    }
}
void MyMenu::saveAsFileSlot()
{
    saveFileName=QFileDialog::getSaveFileName(this,"Save File",QDir::currentPath());
    if(saveFileName.isEmpty())
    {
        QMessageBox::information(this,"Error Message","Please Select A File");
        return;
    }
    QFile * file=new QFile;
    file->setFileName(saveFileName);
    bool ok=file->open(QIODevice::WriteOnly);
    if(ok)
    {
        QTextStream out(file);
        out<<ui->textEdit->toPlainText();//这里是去除textEdit当中的纯文本信息
        file->close();
        this->setWindowTitle(saveFileName+"-----------notepad");
        delete file;
    }
    else
    {
        QMessageBox::information(this,"Error Message","Save File Error");
        return;
    }


}


void MyMenu::printFileSlot()
{


}


void MyMenu::setFontSlot()
{
    //get user selected font
    bool ok;
    QFont font=QFontDialog::getFont(&ok,this);
    if(ok)
    {
        ui->textEdit->setFont(font);
    }
    else
    {
        QMessageBox::information(this,"Error Message","Error Set Font!!");
        return;
    }
}


void MyMenu::setColorSlot()
{
    QColor color=QColorDialog::getColor(Qt::green,this);
    if(color.isValid())
    {
        ui->textEdit->setTextColor(color);
    }
    else
    {
        QMessageBox::information(this,"Error Message","Error set Color!!");
        return;
    }
}


void MyMenu::currentDateTimeSlot()
{
    QDateTime current=QDateTime::currentDateTime();
    QString time=current.toString("yyyy-MM-dd hh:mm:ss");
    ui->textEdit->append(time);

}

a>.执行程式原图:


b>.编辑界面:


c>.菜单项位图:





  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值