[QT] QT + VS2019 minimaliste bloc-notes (ci-joint des ressources du projet)

Liens: https://pan.baidu.com/s/1Mapp9ascmqNObcDUCVnPA Code extraction: HXMT

Tout d'abord, l'analyse des besoins

Fonctions de base:

  1. Entrez le texte et l'affichage
  2. Copier et coller (prise en charge du système général)
  3. Enregistrées localement (fonction d'archivage, le prochain toujours ouvert)
  4. Vous pouvez ouvrir un fichier txt externe
  5. taille de police ajustable et couleur
  6. Vous pouvez imprimer l'heure

En second lieu, la mise en page d'interface

La conception d'interface portable n'utilise pas QT Designer, la mise en page de conception d'interface est entièrement écrit par le code, nous voulons une interface simple conçue pour comprendre les lecteurs de code pur peut être en mesure de vous donner un peu d'inspiration

Insérer ici l'image Description

En troisième lieu, le code de mise en œuvre

commentaires du code dans les moindres détails, un goût délicieux

Notepad.h

#pragma once

#include <QMainWindow>
#include <QMenuBar>
#include <QMenu>
#include <QAction>
#include <QPlainTextEdit>
#include <QClipboard>

#include <QFileDialog>
#include <QFile>
#include <QFontDialog>
#include <QKeySequence>

#include <QtWidgets>
#include <QtCore>

class Notepad : public QMainWindow
{
	Q_OBJECT

public:
	Notepad(QWidget *parent = Q_NULLPTR);
	~Notepad();

private slots:
	void OpenFile();		//打开文件
	void SaveFile();		//保存文件
	void SetFont();			//设置字体
	void SetColor();		//设置颜色
	void OpenTime();		//时间日期

private:
	QTextCodec* codec;		//处理中文

	QMenuBar* mainMenu;		//主菜单
	QMenu* fileMenu;		//文件菜单
	QAction* openAction;		//打开文件
	QAction* saveAction;		//保存文件

	QMenu* editMenu;		//编辑菜单
	QAction* copyAciton;		//复制
	QAction* pasteAction;		//粘贴

	QMenu* formatMenu;		//格式菜单
	QAction* fontAciton;	//字体
	QAction* colorAction;	//颜色

	QMenu* helpMenu;		//帮助菜单
	QAction* timeAction;	//日期和时间

	QTextEdit* textEdit;	//编辑窗口
	QClipboard* clipboard;		//剪贴板
};

Notepad.cpp

#include "Notepad.h"

Notepad::Notepad(QWidget *parent)
	: QMainWindow(parent)
{
    codec = QTextCodec::codecForName("gbk");

    //设置窗口大小及起始位置
    this->setGeometry(200, 200, 800, 500);
    //设置窗口名称
    this->setWindowTitle(codec->toUnicode("QT记事本"));

    mainMenu = new QMenuBar();
    //文件菜单
    fileMenu = new QMenu(codec->toUnicode("文件"));
    mainMenu->addMenu(fileMenu);
    //打开动作
    openAction = new QAction(codec->toUnicode("打开"));
    openAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_O));
    fileMenu->addAction(openAction);
    //保存动作
    saveAction = new QAction(codec->toUnicode("保存"));
    saveAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_S));
    fileMenu->addAction(saveAction);

    //编辑菜单
    editMenu = new QMenu(codec->toUnicode("编辑"));
    mainMenu->addMenu(editMenu);
    //复制动作
    copyAciton = new QAction(codec->toUnicode("复制"));
    copyAciton->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_C));
    editMenu->addAction(copyAciton);
    //粘贴动作
    pasteAction = new QAction(codec->toUnicode("粘贴"));
    pasteAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_V));
    editMenu->addAction(pasteAction);

    //格式菜单
    formatMenu = new QMenu(codec->toUnicode("格式"));
    mainMenu->addMenu(formatMenu);
    //字体动作
    fontAciton = new QAction(codec->toUnicode("字体"));
    formatMenu->addAction(fontAciton);
    //颜色动作
    colorAction = new QAction(codec->toUnicode("颜色"));
    formatMenu->addAction(colorAction);

    //帮助菜单
    helpMenu = new QMenu(codec->toUnicode("帮助"));
    mainMenu->addMenu(helpMenu);
    //时间日期动作
    timeAction = new QAction(codec->toUnicode("时间日期"));
    helpMenu->addAction(timeAction);

    //主菜单栏添加至窗口
    this->setMenuBar(mainMenu);

    //文本编辑
    textEdit = new QTextEdit();
    //文本编辑器添加至窗口
    this->setCentralWidget(textEdit);

    //链接信号和槽
    connect(openAction, SIGNAL(triggered()), this, SLOT(OpenFile()));
    connect(saveAction, SIGNAL(triggered()), this, SLOT(SaveFile()));
    connect(copyAciton, SIGNAL(triggered()), this, SLOT(copy()));
    connect(pasteAction, SIGNAL(triggered()), this, SLOT(paste()));
    connect(fontAciton, SIGNAL(triggered()), this, SLOT(SetFont()));
    connect(colorAction, SIGNAL(triggered()), this, SLOT(SetColor()));
    connect(timeAction, SIGNAL(triggered()), this, SLOT(OpenTime()));
}

Notepad::~Notepad()
{
    //清除缓存
    mainMenu->deleteLater();
    fileMenu->deleteLater();
    openAction->deleteLater();
    saveAction->deleteLater();
    editMenu->deleteLater();
    copyAciton->deleteLater();
    pasteAction->deleteLater();
    formatMenu->deleteLater();
    fontAciton->deleteLater();
    colorAction->deleteLater();
    helpMenu->deleteLater();
    timeAction->deleteLater();
    textEdit->deleteLater();
}

//打开文件
void Notepad::OpenFile()
{
    //显示文件打开对话框,并将选择的文件的路径存储在filePath
    QString filePath;
    filePath = QFileDialog::getOpenFileName
    (   this, 
        codec->toUnicode("打开文件"), 
        "", 
        tr("All Files (*.txt)")
    );
    qDebug() << "OpenFile(): "<<filePath;

    if (filePath != "")
    {
        QFile file;
        file.setFileName(filePath);
        if (file.open(QFile::ReadOnly))
        {
            //如果文件被打开,将其内容显示在编辑窗口
            textEdit->setPlainText(file.readAll());
            file.close();
        }
    }
}

//保存文件
void Notepad::SaveFile()
{
    //显示文件保存对话框,并将选择的文件的路径存储在filePath
    QString filePath;
    filePath = QFileDialog::getSaveFileName
    (   this,
        codec->toUnicode("保存文件"),
        "",
        tr("All Files (*.txt)")
    );
    qDebug() << "SaveFile(): " << filePath;

    if (filePath != "")
    {
        QFile file;
        file.setFileName(filePath);
        if (file.open(QFile::WriteOnly | QFile::Truncate)) 
        {
            //如果文件被打开,编辑内容
            file.write(textEdit->toPlainText().toUtf8());
            file.close();
        }
    }
}

//设置字体
void Notepad::SetFont()
{
    bool ok;
    QFont font = QFontDialog::getFont(&ok, textEdit->font(), this,codec->toUnicode("选择字体"));
    if (ok) 
    {
        // 设置字体
        textEdit->setFont(font);
    }
}

//设置颜色
void Notepad::SetColor()
{
    bool ok;
    QColor color = QColorDialog::getColor(Qt::green, this, codec->toUnicode("选择颜色"));
    if (ok)
    {
        // 设置颜色
        textEdit->setTextColor(color);
    }
}

//时间日期
void Notepad::OpenTime()
{
    // 获得当前时间
    QDateTime current = QDateTime::currentDateTime();
    // 转换时间格式
    QString time = current.toString("yyyy-MM-dd hh:mm:ss");
    // 将时间追加到文本下一行
    textEdit->append(time);
}

fin

Si des lacunes, mais aussi regarder la correction 1 .


  1. Si vous pouvez aider pouces vers le haut, la collecte, l' attention sera ma plus grande motivation ↩︎

Publié neuf articles originaux · a gagné les éloges 40 · vues 2623

Je suppose que tu aimes

Origine blog.csdn.net/CoutCodes/article/details/105280184
conseillé
Classement