Qt 实现记事本的基础功能 6.12

用C++和Qt写一个有关记事本的程序
实现打开文件,保存文件,复制,粘贴,剪切,撤销,删除,修改记事本字体样式和颜色,背景颜色的功能

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

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

void MainWindow::on_actionOpen_File_O_triggered()
{
    QString fileName = QFileDialog::getOpenFileName(this,"打开",QDir::currentPath(),"C++ Source File(*.cpp *.c *.cc);;C++ Header File(*.h);;Text File(*.txt)");
    if(fileName.isEmpty())
        return ;

    QFile file(fileName);
    if(!file.open(QIODevice::ReadOnly))
         qDebug() << "open success!";
    else
        qDebug() << "open failed!";
    QByteArray data = file.readAll();
    ui->textEdit->setText(data);
}

void MainWindow::on_actionSave_File_S_triggered()
{
    QString fileName = QFileDialog::getSaveFileName(this,"保存",QDir::currentPath(),"C++ Source File(*.cpp *.c *.cc);;C++ Header File(*.h);;Text File(*.txt)");
    if(fileName.isEmpty())
        return ;
    qDebug() << fileName;
    QFile file(fileName);
    if(!file.open(QIODevice::WriteOnly))
         qDebug() << "open success!";
    else
        qDebug() << "open failed!";
    QString data = ui->textEdit->document()->toPlainText();
    file.write(data.toLatin1());//qstring--->toLatin1-->qbytearray;;;qbytearray----->qstring
    file.close();
}


void MainWindow::on_actionCopy_C_triggered()
{
    ui->textEdit->copy();
}
void MainWindow::on_actionPaste_V_triggered()
{
    ui->textEdit->paste();
}
void MainWindow::on_actionCut_X_triggered()
{
    ui->textEdit->cut();
}
void MainWindow::on_actionUndo_Z_triggered()
{
    ui->textEdit->undo();
}
void MainWindow::on_actionRedo_triggered()
{
    ui->textEdit->redo();
}

void MainWindow::on_actionDelete_triggered()
{
   //获取光标所在的位置
   QTextCursor cursor = ui->textEdit->textCursor();
   if(cursor.hasSelection())//如果光标有选中
       cursor.deleteChar();//删除选中的内容
   else
       cursor.deletePreviousChar();//否则删除光标的前一个字符
}

void MainWindow::on_actionFont_settings_triggered()
{
    bool ok;
    QFont font = QFontDialog::getFont(&ok,QFont("Arial"),this,"字体");
    ui->textEdit->setFont(font);
}

void MainWindow::on_actionText_color_settings_triggered()
{
    QColor color = QColorDialog::getColor(QColor(Qt::black),this,"颜色");
    ui->textEdit->setTextColor(color);
}

void MainWindow::on_actionBackground_color_setting_triggered()
{
    QColor color = QColorDialog::getColor(QColor(Qt::white),this,"颜色");
    if(color.isValid())
    {
    QPalette palette = ui->textEdit->palette();
    palette.setColor(QPalette::Base, color);
    ui->textEdit->setPalette(palette);
    }
}

void MainWindow::on_actionAbout_triggered()
{
    QMessageBox::about(this,"关于","这是一个有关学习生活的记事本");
}
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QFileDialog>
#include <QDebug>
#include <QTextEdit>
#include <QTextCursor>
#include <QFontDialog>
#include <QColorDialog>
#include <QPalette>
#include <QMessageBox>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

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

private slots:
    void on_actionOpen_File_O_triggered();

    void on_actionSave_File_S_triggered();

    void on_actionCopy_C_triggered();

    void on_actionPaste_V_triggered();

    void on_actionCut_X_triggered();

    void on_actionUndo_Z_triggered();

    void on_actionRedo_triggered();

    void on_actionDelete_triggered();

    void on_actionFont_settings_triggered();

    void on_actionText_color_settings_triggered();

    void on_actionBackground_color_setting_triggered();

    void on_actionAbout_triggered();

private:
    Ui::MainWindow *ui;
    QTextEdit *textEdit;
};

#endif // MAINWINDOW_H
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孤独memories

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值