qt 实现自己的小笔记本(哼。拿下本本记下来了

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38313246/article/details/81806014

1.1实现我的记事本

 

1.3这次使用菜单了,笔记本需要有菜单的选项(就是那个下拉菜单框

1.4在菜单栏上双击 即可添加选项 子栏目一样

文件-新建/打开/保存/退出 共四个选项(可以附加一个打开图片的选项)

1.5 括号内取地址加符号等价于 快捷键     然后子栏目没法输入英文   可以在主栏目输入好之后复制粘贴过去 

(同时记得 你的每个选项的名字 在右侧组件栏中 修改一下名字喲 (只要自己能认出来就行))

1.6 选择文本编辑框 拖入 然后点击整体框 选择垂直布局

/***********************************************************************************************************************************************/

效果展示:

啊啊啊gif太大不让传。。。你们自己试试吧。

/***********************************************************************************************************************************************/

接下来就是代码的实现:

基本上我会做好注释 觉得不错的记得点赞,有问题记得留言欧~

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QFileDialog>
#include <QString>
#include <QCoreApplication>
#include <QDebug>
#include <QFile>
#include <QImage>
#include <QByteArray>
#include <QFileDialog>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

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

private:
    Ui::MainWindow *ui;

private slots:
    void newActionSlot();
    void openActionSlot();
    void openPictureSlot();

    void quitActionSlot();
    void saveActionSlot();


};

#endif // MAINWINDOW_H

mainwindow.cpp

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

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

    connect(ui->newaction,&QAction::triggered,this,&MainWindow::newActionSlot);
    connect(ui->openaction,&QAction::triggered,this,&MainWindow::openActionSlot);
    connect(ui->quitaction,&QAction::triggered,this,&MainWindow::quitActionSlot);
    connect(ui->saveaction,&QAction::triggered,this,&MainWindow::saveActionSlot);

    connect(ui->openpicture,&QAction::triggered,this,&MainWindow::openPictureSlot);
}

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

void MainWindow::newActionSlot()//新建 就是清空当前文档(也就一个textEdit)中的内容 然后把窗口的名字改成 你想要的新名字
{
    ui->textEdit->clear();
    this->setWindowTitle("新建文本文档.txt");
}

void MainWindow::openActionSlot()//打开一个文件 那么就需要这个文件的名字
{
    QString filename = QFileDialog::getOpenFileName(this,"打开文件",QCoreApplication::applicationDirPath());
    //                      参数2:对话框标题  参数3:默认打开目录(这个函数就是调用当前目录  ....最后其实还有一个参数就是可以选择的文件类型

    if(filename.isEmpty())//如果你没有选择文件就关闭了选择窗口 那么文件名不就是空了嘛
    {
        qDebug()<<"请选择文件";
    }
    else
    {
        QFile *file = new QFile;
        file->setFileName(filename);

        file->open(QIODevice::ReadOnly);

        ui->textEdit->setText(QString(file->readAll()));

        file->close();
        delete file;
    }
}

void MainWindow::openPictureSlot()//选择性使用 我为了打开一张图片而已
{
    QString filename = QFileDialog::getOpenFileName(this,"打开图片",QCoreApplication::applicationDirPath());

    if(filename.isEmpty())
    {
        qDebug()<<"请选择文件";
    }
    else
    {//这里和上面不同 用到了QImage 进行图片的载入
        QImage img;
        img.load(filename);
        ui->label->setPixmap(QPixmap::fromImage(img));
        /*注:也可以直接用QPixmap类的对象采用Load函数加载图像。这里说下QImage和QPixmap类的用处:
         * QImage为图像的像素级访问做了优化,QPixmap使用底层平台的绘制系统进行绘制,无法提供像素级别的操作,而QImage则是使用独立于硬件的绘制系统。*/
    }
}

void MainWindow::quitActionSlot()//这个最简单 直接关闭窗口就行
{
    this->close();
}

void MainWindow::saveActionSlot()
{
    QString filename = QFileDialog::getSaveFileName(this,"打开文件",QCoreApplication::applicationDirPath());
    //                       getsaveFileName和上面的getOpenFileName 就是区别

    if(filename.isEmpty())
    {
        qDebug()<<"请选择图片";
    }
    else
    {
        QByteArray data;
        data.append(ui->textEdit->toPlainText()); //QByteArray 自带转换函数append 将QString 格式 转换成 QByteArray 然后就可以写回文件了

        QFile *file = new QFile;
        file->setFileName(filename);

        file->open(QIODevice::WriteOnly);
        file->write(data);

        file->close();//最后写完文件后记得将文件关闭
        delete file;
    }
}

main.cpp中没有任何改变

#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}

猜你喜欢

转载自blog.csdn.net/qq_38313246/article/details/81806014
今日推荐