qt开发环境 - 丁林松教程,文本编辑器

#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!!");
      }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值