2021-03-21 简易记事本

记事本实现了新建、打开、保存、另存为、字体、颜色、时间,复制、黏贴、剪贴、撤销、全选,定时器做个简易时钟。

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMessageBox>
#include <QDebug>
#include <QFile>
#include <QFileDialog>
#include <QDir>
#include <QTextStream>
#include <QFont>
#include <QFontDialog>
#include <QColor>
#include <QColorDialog>
#include <QDateTime>
#include <QTimer>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    this->setWindowTitle("United --notepad");
    //定时器第二种方式
    QTimer *timer1 = new QTimer(this);
    //启动定时器对象

    timer1->start(1); //毫秒最单位
    connect(timer1,&QTimer::timeout,[=](){
        QDateTime now = QDateTime::currentDateTime();
        QString time = now.toString("yyyy-MM-dd hh:mm:ss");
        ui->time->setText(time);
    });
    connect(ui->actionxinjian,&QAction::triggered,this,&MainWindow::newFileSlot);
    connect(ui->actiondakai_O,&QAction::triggered,this,&MainWindow::openFileSlot);
    connect(ui->actionbaocun_S,&QAction::triggered,this,&MainWindow::saveFileSlot);
    connect(ui->actionziti_F,&QAction::triggered,this,&MainWindow::setFontSlot);
    connect(ui->actionyanse_L,&QAction::triggered,this,&MainWindow::setColorSlot);
    connect(ui->actionriqi_D,&QAction::triggered,this,&MainWindow::currentDateTimeSlot);
    connect(ui->actiontuichu_Q,&QAction::triggered,this,&MainWindow::close);
    //edit menu 系统提供的功能
    connect(ui->actionchexiao_U,&QAction::triggered,ui->textEdit,&QTextEdit::undo);
    connect(ui->actionchongzu_R,&QAction::triggered,ui->textEdit,&QTextEdit::redo);
    connect(ui->actionfuzhu_C,&QAction::triggered,ui->textEdit,&QTextEdit::copy);
    connect(ui->actionniantie_V,&QAction::triggered,ui->textEdit,&QTextEdit::paste);
    connect(ui->actionquanxuan_D,&QAction::triggered,ui->textEdit,&QTextEdit::selectAll);
    connect(ui->actionqietie_T,&QAction::triggered,ui->textEdit,&QTextEdit::cut);
}

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

void MainWindow::newFileSlot()
{
//如果当前文档内容已经改变
    if(ui->textEdit->document()->isModified())
    {
        qDebug()<<"文件已改变";
    }
    else
    {
        qDebug()<<"文件未改变";
        ui->textEdit->clear();
        this->setWindowTitle("Untitled.txt--月星");
    }
}
void MainWindow::openFileSlot()
{
    //获得文件名称
    QString filename = QFileDialog::getOpenFileName(this,"Open file",QDir::currentPath(),"*.txt");
    qDebug()<<filename;
    saveFileName = filename;
    if(filename.isEmpty())
    {
        QMessageBox::information(this,"Error Message","Please Select a Text");
        return;
    }
    //只读形式打开文件
    QFile *file = new QFile;
    file->setFileName(filename);
    bool ok = file->open(QIODevice::ReadOnly);
    if(ok)
    {
        //文件与文本流相关联
        QTextStream in(file);
        ui->textEdit->setText( in.readAll());//使用流读取整个文件内容放入textedit。
        file->close();
        delete file;
    }
    else
    {
        QMessageBox::information(this,"Error Message","File Open Error"+file->errorString());
    }
}
void MainWindow::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();
            delete file;
        }
        else
        {
            QMessageBox::information(this,"Error Message","File Open Error"+file->errorString());
        }
    }
}
void MainWindow::saveAsFileSlot()
{
    QString filename = QFileDialog::getOpenFileName(this,"Save file",QDir::currentPath(),"*.txt");
    qDebug()<<filename;
    if(filename.isEmpty())
    {
        QMessageBox::information(this,"Error Message","Please Select a Text");
        return;
    }
    //只读形式打开文件
    QFile *file = new QFile;
    file->setFileName(filename);
    bool ok = file->open(QIODevice::WriteOnly);
    if(ok)
    {
        //文件与文本流相关联
        QTextStream out(file);
        out << ui->textEdit->toPlainText();//使用流读取整个文件内容放入textedit。
        file->close();
        delete file;
    }
    else
    {
        QMessageBox::information(this,"Error Message","File Open Error"+file->errorString());
    }
}
 void  MainWindow::setFontSlot()
 {
    /*
     * bool ok;
  QFont font = QFontDialog::getFont(
                  &ok, QFont("Helvetica [Cronyx]", 10), this);
  if (ok) {
      // the user clicked OK and font is set to the font the user selected
  } else {
      // the user canceled the dialog; font is set to the initial
      // value, in this case Helvetica [Cronyx], 10
  }
     */
    bool ok;
    QFont font = QFontDialog::getFont(&ok,this);
    if(ok)
    {
        ui->textEdit->setFont(font);
    }
    else
    {
        QMessageBox::information(this,"Error Message","Error Set Font");
    }

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

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值