记事本实现了新建、打开、保存、另存为、字体、颜色、时间,复制、黏贴、剪贴、撤销、全选,定时器做个简易时钟。
#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);
}