模拟记事本

1. 模拟记事本

设计一个记事本

(1)更改字体颜色

(2)更改字体大小

(3)新建记事本

(4)查找记事本中的数据

(5)设置消息提示

(6)设置粘贴、复制、剪切、撤销等

......................

my_notepad

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

public slots:

    //执行新建操作
    void create_text();
    //执行另存为操作
    void rece_lingcunwei();
    //执行打开操作
    void dakai();
    //执行查找操作
    void my_search();
    //执行剪切操作
    void jianqie();
    //复制操作
    void fuzhi();
    //粘贴操作
    void zhantie();
    //撤销操作
    void chexiao();

    //执行加粗
    void jia_cu();
    //执行字体变大
    void zitiBig();
    //执行字体变小
    void zitiSmall();
    //执行字体颜色改变
    void zitiColor();


private:
    Ui::MainWindow *ui;

    //菜单栏
    //新建动作
    QAction* action_create = new QAction();
    //打开动作
    QAction* action_dakai = new QAction();
    //另存为动作
    QAction* action_lingcunwei = new QAction();
    //查找动作
    QAction* action_search = new QAction();

    //剪切操作
    QAction* action_jianqie = new QAction();
    //复制操作
    QAction* action_copy = new QAction();
    //粘贴操作
    QAction* action_zhantie = new QAction();
    //撤销操作
    QAction* action_chexiao = new QAction();


    //实例化工具栏
    QToolBar* toolBar = new QToolBar;
    //加粗动作
    QAction* jiacu = new QAction();
    //字体变大动作
    QAction* ziti_big = new QAction();
    //字体变大动作
    QAction* ziti_small = new QAction();
    //改变字体颜色
    QAction* ziti_color = new QAction();



    //状态栏
    QPushButton* btn4 = new QPushButton("100%");
    QPushButton* btn5 = new QPushButton("UTF-8");
    QPushButton* btn6 = new QPushButton("第1行 第5列");

    //工作区
    //实例化纯文本编辑框
    QPlainTextEdit* plainTextEdit = new QPlainTextEdit;


};
#endif // MAINWINDOW_H

mainwindow.cpp

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

/*
设计一个记事本
		(1)更改字体颜色
		(2)更改字体大小
		(3)新建记事本
		(4)查找记事本中的数据
		(5)设置消息提示
		(6)设置粘贴、复制、剪切、撤销等
		......................
*/

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

    QMenu* menu_dir = ui->menubar->addMenu("文件(F)");
    action_create = menu_dir->addAction("新建(N)");

    action_dakai = menu_dir->addAction("打开(O)");

    action_lingcunwei = menu_dir->addAction("另存为(A)");

    menu_dir->addMenu("退出(X)");

    QMenu* menu_edit = ui->menubar->addMenu("编辑(E)");
    action_chexiao = menu_edit->addAction("撤销");
    action_jianqie =  menu_edit->addAction("剪切");
    action_copy = menu_edit->addAction("复制");
    action_zhantie = menu_edit->addAction("粘贴");
    action_search = menu_edit->addAction("查找");


    QMenu* menu_geshi = ui->menubar->addMenu("格式(O)");
    menu_geshi->addMenu("字体");

    QMenu* menu_look = ui->menubar->addMenu("查看(V)");
    menu_look->addMenu("缩放");
    menu_look->addMenu("状态栏");

    QMenu* menu_help = ui->menubar->addMenu("帮助(H)");
    menu_help->addMenu("查看帮助");

    //绑定新建动作
    connect(this->action_create,SIGNAL(triggered()),this,SLOT(create_text()));
    //绑定用户点击  另存为...   执行一个动作,就会触发一个信号
    connect(this->action_lingcunwei,SIGNAL(triggered()),this,SLOT(rece_lingcunwei()));
    //绑定打开操作
    connect(this->action_dakai,SIGNAL(triggered()),this,SLOT(dakai()));
    //绑定查找操作
    connect(this->action_search,SIGNAL(triggered()),this,SLOT(my_search()));
    //绑定剪切操作
    connect(this->action_jianqie,SIGNAL(triggered()),this,SLOT(jianqie()));
    //绑定复制操作
    connect(this->action_copy,SIGNAL(triggered()),this,SLOT(fuzhi()));
    //绑定粘贴操作
    connect(this->action_zhantie,SIGNAL(triggered()),this,SLOT(zhantie()));
    //绑定撤销操作
    connect(this->action_chexiao,SIGNAL(triggered()),this,SLOT(chexiao()));


    //添加一个工具栏
    this->addToolBar(this->toolBar);
    //加粗
    this->jiacu = this->toolBar->addAction("B");
    //字体变大
    this->ziti_big = this->toolBar->addAction("A");
    //字体变小
    this->ziti_small = this->toolBar->addAction("a");
    //改变字体颜色
    this->ziti_color = this->toolBar->addAction("C");

    //绑定加粗动作
    connect(this->jiacu,SIGNAL(triggered()),this,SLOT(jia_cu()));
    //绑定字体变大动作
    connect(this->ziti_big,SIGNAL(triggered()),this,SLOT(zitiBig()));
    //绑定字体变小动作
    connect(this->ziti_small,SIGNAL(triggered()),this,SLOT(zitiSmall()));
    //绑定字体颜色动作
    connect(this->ziti_color,SIGNAL(triggered()),this,SLOT(zitiColor()));


    //添加状态栏
    ui->statusbar->setSizeGripEnabled(true);//右下角有三角网格
    this->btn4->setFlat(true);//隐藏按钮的边框
    ui->statusbar->addWidget(this->btn4);
    //设置位置
    this->btn5->setFlat(true);
    ui->statusbar->addPermanentWidget(this->btn5);//设置到右边
    this->btn6->setFlat(true);
    ui->statusbar->addPermanentWidget(this->btn6);//设置到右边

    //添加工作区
    //向中心工作区添加纯文本编辑框
    this->setCentralWidget(this->plainTextEdit);

}

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

//执行新建操作
void MainWindow::create_text(){
    //再打开一个窗口
    MainWindow* w2 = new MainWindow;
    w2->show();
}

//执行另存为操作
void MainWindow::rece_lingcunwei(){
    qDebug()<<"执行另存为..."<toPlainText();
            //写入
            file.write(data.toUtf8());//toUtf8() 将QString转为QByteArray类型
        }
        file.close();//关闭
    }
    //另存为完成后,关闭记事本界面
    this->close();
}

//打开操作
void MainWindow::dakai(){
    //打开操作就相当于读取文件内容
    qDebug()<<"执行打开操作"<show();
            //写入记事本
            w3->plainTextEdit->appendPlainText(data);

        }
        file.close();//关闭
    }
}

//执行查找操作
void MainWindow::my_search(){
    //输入对话框
    // 获取查找文本
    QString searchText = QInputDialog::getText(this, "查找", "请输入要查找的文本:");

    if (searchText.isEmpty()) {
        // 用户取消了查找
        return;
    }

    // 在文本中查找
    //先获取光标位置
    QTextCursor cursor = plainTextEdit->textCursor();

    //将文本光标(QTextCursor)移动到文本的开头位置。
    cursor.movePosition(QTextCursor::Start);
    //设置光标的位置在开头
    plainTextEdit->setTextCursor(cursor);

    //plainTextEdit->find(searchText)查找内容,用于在文本编辑器中查找指定的文本,并返回一个布尔值
    while (plainTextEdit->find(searchText)) {
        // 选中将找到的文本
        plainTextEdit->setTextCursor(plainTextEdit->textCursor());

        // 询问用户是否继续查找
        QMessageBox::StandardButton reply = QMessageBox::question(this, "继续查找", "是否继续查找?",QMessageBox::Yes | QMessageBox::No);
        if (reply == QMessageBox::No) {
            break;
        }

        // 将光标移到下一个字符位置以便继续查找
        cursor.movePosition(QTextCursor::NextCharacter);
    }
}

//剪切操作
void MainWindow::jianqie(){
    plainTextEdit->cut();
}
//复制操作
void MainWindow::fuzhi(){
    plainTextEdit->copy();
}
//粘贴操作
void MainWindow::zhantie(){
    plainTextEdit->paste();
}
//撤销操作
void MainWindow::chexiao(){
    plainTextEdit->undo();
}


//执行加粗
void MainWindow::jia_cu(){
    qDebug()<<"字体加粗";
//    bool ok = false;
//    //选择字体格式
//    QFont font = QFontDialog::getFont(&ok,this);
//    if(ok){

//        //定位光标操作文本
//        QTextCursor cursor =  plainTextEdit->textCursor();
//        //通过 QTextCharFormat,你可以设置文本的字体、字号、颜色、背景颜色、粗体、斜体等属性。
//        QTextCharFormat format;
//        format.setFont(font);
//        //把格式设置给选中文本
//        cursor.mergeCharFormat(format);

//        qDebug()<<"字体设置成功"<textCursor();
    //获取当前文本格式
    QTextCharFormat format = cursor.charFormat();
    //获取当前字体
    QFont font = format.font();
    // 切换加粗状态
    font.setBold(!font.bold());

    // 将新的字体应用于格式
    format.setFont(font);

    // 将新的格式应用于选中的文本
    cursor.mergeCharFormat(format);

}

//执行字体变大
void MainWindow::zitiBig(){
    qDebug()<<"字体大小改变";

    //定位光标操作文本
    QTextCursor cursor =  plainTextEdit->textCursor();
    //获取当前文本格式
    QTextCharFormat format = cursor.charFormat();
    //获取当前字体
    QFont font = format.font();

    // 获取当前字体大小
    qreal currentSize = font.pointSizeF();

    //增加字体大小
    qreal newSize = currentSize + 2;

    //设置新的字体大小
    font.setPointSizeF(newSize);

    // 将新的字体应用于格式
    format.setFont(font);

    //把格式设置给选中文本
    cursor.mergeCharFormat(format);

    qDebug()<<"字体变大成功"<textCursor();
    //获取当前文本格式
    QTextCharFormat format = cursor.charFormat();
    //获取当前字体
    QFont font = format.font();

    // 获取当前字体大小
    qreal currentSize = font.pointSizeF();

    //增加字体大小
    qreal newSize = currentSize - 2;

    //设置新的字体大小
    font.setPointSizeF(newSize);

    // 将新的字体应用于格式
    format.setFont(font);

    //把格式设置给选中文本
    cursor.mergeCharFormat(format);

    qDebug()<<"字体变大成功"<textCursor();
    QTextCharFormat format;
    //设置颜色格式
    format.setForeground(color);
    //将颜色设置给当前字体
    cursor.mergeCharFormat(format);
}

测试

改变字体颜色

模拟记事本_第1张图片

更改字体大小

模拟记事本_第2张图片

新建记事本

模拟记事本_第3张图片

查找内容

模拟记事本_第4张图片

模拟记事本_第5张图片

复制粘贴等

模拟记事本_第6张图片

打开记事本

模拟记事本_第7张图片

模拟记事本_第8张图片

模拟记事本_第9张图片

另存为

模拟记事本_第10张图片

模拟记事本_第11张图片

模拟记事本_第12张图片

模拟记事本_第13张图片

你可能感兴趣的:(Qt,Qt,c++,c语言,算法)