版权声明:本文为博主原创文章,未经博主允许不得转载。 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();
}