#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QMessageBox>
#include <QDebug>
#include <QFile>
#include <QFileDialog>
#include <QDir>
#include <QTextStream>
#include <QFontDialog>
#include <QFont>
#include <QColor>
#include <QColorDialog>
#include <QTime>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
QString saveFileName;
private slots:
void newFileSlot();
void openFileSlot();
void saveFileSlot();
void saveAsFileSlot();
void printFileSlot();
void setFontSlot();
void setColorSlot();
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->setWindowTitle("Untitled -----notepad");
QObject::connect(ui->actionnew_N,SIGNAL(triggered()),this,SLOT(newFileSlot()));
QObject::connect(ui->actionopen_O,SIGNAL(triggered()),this,SLOT(openFileSlot()));
QObject::connect(ui->actionsave_S,SIGNAL(triggered()),this,SLOT(saveFileSlot()));
QObject::connect(ui->actionexit,SIGNAL(triggered()),this,SLOT(close()));
QObject::connect(ui->actionundo_U,SIGNAL(triggered()),ui->textEdit,SLOT(undo()));
QObject::connect(ui->actionredo_R,SIGNAL(triggered()),ui->textEdit,SLOT(redo()));
QObject::connect(ui->actioncpoy_C,SIGNAL(triggered()),ui->textEdit,SLOT(copy()));
QObject::connect(ui->actionpaste_V,SIGNAL(triggered()),ui->textEdit,SLOT(paste()));
QObject::connect(ui->actionselect_A,SIGNAL(triggered()),ui->textEdit,SLOT(selectAll()));
QObject::connect(ui->actioncut_X,SIGNAL(triggered()),ui->textEdit,SLOT(cut()));
QObject::connect(ui->actiontype_T,SIGNAL(triggered()),this,SLOT(setFontSlot()));
QObject::connect(ui->actioncolor_L,SIGNAL(triggered()),this,SLOT(setColorSlot()));
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::newFileSlot()
{
if(ui->textEdit->document()->isModified())
{
qDebug()<<"current file modified";
}
else
{
//qDebug()<<"not modified";
ui->textEdit->clear();
this->setWindowTitle("Untitled.txt --------ayumi");
}
}
void MainWindow::openFileSlot()
{
//get file name
QString fileName = QFileDialog::getOpenFileName(this,"Open File",QDir::currentPath());
// qDebug()<< "fileName is" << fileName;
if(fileName.isEmpty())
{
QMessageBox::information(this,"Error Message", "Please Select a Text File");
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 the file
}
else
{
QMessageBox::information(this,"Error Message", "File Open Error" + file->errorString());
return;
}
}
void MainWindow::saveFileSlot()
{
if(saveFileName.isEmpty())
{
this->saveFileSlot();
}
else
{
QFile* file = new QFile;
file->setFileName(saveFileName);
bool ok = file->open(QIODevice::WriteOnly);
if(ok)
{
QTextStream out(file);
out<<ui->textEdit->toPlainText();//去除纯文本?
file->close();
delete file;
}
}
}
void MainWindow::saveAsFileSlot()
{
//get file name
QString saveFileName = QFileDialog::getSaveFileName(this,"Open File",QDir::currentPath());
// qDebug()<< "fileName is" << fileName;
if(saveFileName.isEmpty())
{
QMessageBox::information(this,"Error Message", "Please Select a Text File");
return;
}
QFile* file = new QFile;
file->setFileName(saveFileName);
bool ok = file->open(QIODevice::WriteOnly);
if(ok)
{
QTextStream out(file);
out<<ui->textEdit->toPlainText();//去除纯文本?
file->close();
delete file;
}
else
{
QMessageBox::information(this,"Error Message", "Save File Error" + file->errorString());
return;
}
}
void MainWindow::printFileSlot()
{
//QPrintDialog static member call
}
void MainWindow::setFontSlot()
{
bool ok;
QFont font = QFontDialog::getFont(&ok, QFont("Times", 12), this);
if (ok) {
// font is set to the font the user selected
ui->textEdit->setFont(font);
} else {
// the user canceled the dialog; font is set to the initial
// value, in this case Times, 12.
QMessageBox::information(this,"Error Message","Error Set Font!!");
}
}
void MainWindow::setColorSlot()
{
// const QColorDialog::ColorDialogOptions options = QFlag(colorDialogOptionsWidget->value());
const QColor color = QColorDialog::getColor(Qt::green, this);
if (color.isValid()) {
ui->textEdit->setTextColor(color);
// colorLabel->setPalette(QPalette(color));
// colorLabel->setAutoFillBackground(true);
}
else {
// the user canceled the dialog; font is set to the initial
// value, in this case Times, 12.
QMessageBox::information(this,"Error Message","Color is unvalid!!");
}
}