嗯嗯,博主比较懒,这里不想详细说文件是怎么创建的(基本的操作可以自己看书或者百度),至于怎么打包,可以参照上一篇博文Qt开发——简易PS制作之皮一下很开心,这里我就只写代码了
第一步
头文件中添加代码:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QMenu>
#include<QTextEdit>
#include<QMenuBar>
#include<QAction>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
private:
QString fileNameString;
bool isChanged;
QTextEdit *text1;
QMenu *fileMenu;//文件下拉菜单
QAction *newFile;//新建文件。
QAction *openFile;//打开文件。
QAction *saveFile;//保存文件。
QAction *quitFile;//退出。
QMenu *editMenu;//编辑下拉菜单Qt开发——简易PS制作之皮一下很开心
QAction *copyEdit;
QAction *pasteEdit;
QAction *cutEdit;
QAction *allseleteEdit;
QMenu *helpMenu;//帮助下拉菜单
QAction *aboutSoftware;
QAction *howToUse;
private slots:
void on_new();//新建
void on_open();//打开
void on_save();//保存
void on_quit();//退出
void on_copy();//复制
void on_paste();//粘贴
void on_cut();//剪切
void on_allSelect();//全选
void on_howtoUse();//如何使用
void on_aboutSoftware();//关于软件
void on_changed();//改变
};
#endif // MAINWINDOW_H
第二步
头文件中代码的实现
#include "mainwindow.h"
#include<QMessageBox>
#include<QDebug>
#include<QFileDialog>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
isChanged = true;
text1=new QTextEdit;
this->setCentralWidget(text1);
//-------------文件下拉项------------------
fileMenu=this->menuBar()->addMenu(u8"文件");
newFile=new QAction(u8"新建",this);
newFile->setShortcut(tr("CTRL+N"));
connect(newFile,&QAction::triggered,this,&MainWindow::on_new);
fileMenu->addAction(newFile);//添加到显示
openFile=new QAction(u8"打开",this);
openFile->setShortcut(tr("CTRL+O"));
connect(openFile,&QAction::triggered,this,&MainWindow::on_open);
fileMenu->addAction(openFile);//添加到显示
saveFile=new QAction(u8"保存",this);
saveFile->setShortcut(tr("CTRL+S"));
fileMenu->addAction(saveFile);//添加到显示
connect(saveFile,&QAction::triggered,this,&MainWindow::on_save);
quitFile=new QAction(u8"退出",this);
quitFile->setShortcut(tr("CTRL+Q"));
fileMenu->addAction(quitFile);//添加到显示
connect(quitFile,&QAction::triggered,this,&MainWindow::on_quit);
//-------------文件下拉项完成------------------
//-------------编辑下拉项---------------------
editMenu=this->menuBar()->addMenu(u8"编辑");
copyEdit=new QAction(u8"复制",this);
copyEdit->setShortcut(tr("CTRL+C"));
editMenu->addAction(copyEdit);
connect(copyEdit,&QAction::triggered,this,&MainWindow::on_copy);
pasteEdit=new QAction(u8"粘贴",this);
pasteEdit->setShortcut(tr("CTRL+V"));
editMenu->addAction(pasteEdit);
connect(pasteEdit,&QAction::triggered,this,&MainWindow::on_paste);
cutEdit=new QAction(u8"剪切",this);
cutEdit->setShortcut(tr("CTRL+X"));
editMenu->addAction(cutEdit);
connect(cutEdit,&QAction::triggered,this,&MainWindow::on_cut);
allseleteEdit=new QAction(u8"全选",this);
allseleteEdit->setShortcut(tr("CTRL+A"));
editMenu->addAction(allseleteEdit);
connect(allseleteEdit,&QAction::triggered,this,&MainWindow::on_allSelect);
//-------------编辑下拉项完成---------------------
//帮助下拉项
helpMenu=this->menuBar()->addMenu(u8"帮助");
aboutSoftware=new QAction(u8"关于软件",this);
helpMenu->addAction(aboutSoftware);
connect(aboutSoftware,&QAction::triggered,this,&MainWindow::on_aboutSoftware);
howToUse=new QAction(u8"如何使用",this);
helpMenu->addAction(howToUse);
connect(howToUse,&QAction::triggered,this,&MainWindow::on_howtoUse);
}
MainWindow::~MainWindow()
{
}
void MainWindow::on_new()
{
if(isChanged)
{
QMessageBox::information(this,"提示","文件尚未保存");
}
else
{
text1->setText("");
}
}
void MainWindow::on_open()
{
if(isChanged)
{
QMessageBox::information(this,"提示","文件尚未保存");
}
else
{
fileNameString = QFileDialog::getOpenFileName(this,"打开");//当前窗体,打开文件的对话框的标题是:“打开”
if(fileNameString==NULL){
return ;
}
FILE *pf = fopen(fileNameString.toStdString().data(),"r+");//可读可写的方式打开。
if(pf==NULL)
return ;
char buf[1024];
QString str;
while(!feof(pf)){
fgets(buf,sizeof(buf),pf);
str+=buf;
}
text1->setText(str);
fclose(pf);
}
}
void MainWindow::on_save()
{
fileNameString = QFileDialog::getSaveFileName(this,"保存");
if(fileNameString==NULL)
return ;
FILE *pf = fopen(fileNameString.toStdString().data(),"w+");
if(pf==NULL)
return ;
QString str = text1->toPlainText();
fputs(str.toStdString().data(),pf);
fclose(pf);
isChanged = false;
}
void MainWindow::on_quit()
{
if(isChanged){
QMessageBox::information(this,"提示","文件尚未保存,点击右上角×,取消保存");
}
else {
this->close();
}
}
void MainWindow::on_copy()
{
text1->copy();
}
void MainWindow::on_paste()
{
text1->paste();
}
void MainWindow::on_cut()
{
text1->cut();
}
void MainWindow::on_allSelect()
{
text1->selectAll();
}
void MainWindow::on_howtoUse()
{
QMessageBox::information(this,"如何使用","同记事本基本相同");
}
void MainWindow::on_aboutSoftware()
{
QMessageBox::information(this,"关于软件","Realized By : Letben");
}
void MainWindow::on_changed()
{
isChanged=true;
}
第三步
main函数代码:
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.resize(800,600);
w.show();
return a.exec();
}
都是一些基础应用,所以就不加说明,大家可以参照一下注释
最后效果是这样的