此记事本有打开、关闭文件,保存文件、另存文件等功能,这些功能有些还不完善,以后会慢慢补全。
源代码如下:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QAction>//菜单项
#include <QMenu>//菜单
#include <QMenuBar>//菜单栏
#include <QAction>
#include <QToolBar>
#include <QDockWidget>
#include <QWidget>
#include <QStatusBar>
#include <QTextEdit>
#include <QLabel>
#include <QColorDialog>
#include <QColor>
#include <QFont>
#include <QFontDialog>
#include <QFileDialog>
#include <QFile>
#include <QMessageBox>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
private:
QMenu *fileMenu;
QAction *openAct,*newAct,*saveAct,*save1Act,*closeAct,*colorAct,*fontAct;
QToolBar *toolBar;
QDockWidget *dockWidget;
QTextEdit *te;
QString filename;
private slots:
void openfile();
void newfile();
void savefile();
void closefile();
void colorchange();
void fontchange();
void savefile1();
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include<QDebug>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent)
{
setFixedSize(800,600);
setWindowTitle("主窗口");
setWindowIcon(QIcon(":/newfile.png"));
//菜单栏
fileMenu=menuBar()->addMenu("文件");
openAct=new QAction("打开",this);
openAct->setShortcut(QKeySequence::Open);
openAct->setStatusTip("open");//设置状态栏的提示信息
newAct=new QAction("新建",this);
newAct->setShortcut(QKeySequence::New);
saveAct=new QAction("保存");
saveAct->setShortcut(QKeySequence::Save);
closeAct=new QAction("关闭此文件");
closeAct->setShortcut(QKeySequence::Close);
save1Act=new QAction("另存为");
save1Act->setShortcut(QKeySequence::SaveAs);
fileMenu->addAction(openAct);
fileMenu->addAction(newAct);
fileMenu->addAction(saveAct);
fileMenu->addAction(save1Act);
fileMenu->addAction(closeAct);
fileMenu=menuBar()->addMenu("格式");
colorAct=new QAction("颜色");
fileMenu->addAction(colorAct);
fontAct=new QAction("字体");
fileMenu->addAction(fontAct);
//工具栏
toolBar=addToolBar("open");
toolBar->addAction(openAct);
toolBar->addAction(newAct);
toolBar->addAction(saveAct);
toolBar->addAction(save1Act);
toolBar->addAction(closeAct);
//工作区
// dockWidget=new QDockWidget("sheet 1",this);
// dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea);
// addDockWidget(Qt::LeftDockWidgetArea,dockWidget);
// te=new QTextEdit;
// dockWidget->setWidget(te);
//状态栏
//statusBar()->showMessage("状态栏");
QLabel *lb1=new QLabel("行数:");
QLabel *lb2=new QLabel("列数:");
statusBar()->addWidget(lb1);
statusBar()->addWidget(lb2);
connect(openAct,SIGNAL(triggered(bool)),this,SLOT(openfile()));
connect(newAct,SIGNAL(triggered(bool)),this,SLOT(newfile()));
connect(saveAct,SIGNAL(triggered(bool)),this,SLOT(savefile()));
connect(closeAct,SIGNAL(triggered(bool)),this,SLOT(closefile()));
connect(fontAct,SIGNAL(triggered(bool)),this,SLOT(fontchange()));
connect(colorAct,SIGNAL(triggered(bool)),this,SLOT(colorchange()));
connect(save1Act,SIGNAL(triggered(bool)),this,SLOT(savefile1()));
}
#include <QDebug>
void MainWindow::newfile()
{
dockWidget=new QDockWidget("新建文档",this);
dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea);
addDockWidget(Qt::LeftDockWidgetArea,dockWidget);
te=new QTextEdit;
dockWidget->setWidget(te);
}
void MainWindow::openfile()
{
filename=QFileDialog::getOpenFileName(this,"open a file",
"/Users/OuXiangtong/Desktop/","*.txt");
QFile file(filename);
dockWidget=new QDockWidget(filename,this);
addDockWidget(Qt::LeftDockWidgetArea,dockWidget);
te=new QTextEdit;
dockWidget->setWidget(te);
if(file.open(QIODevice::ReadWrite)){
file.write(te->toPlainText().toLatin1());
QByteArray data=file.readAll();
te->insertPlainText(data);
}
file.close();
}
void MainWindow::savefile()
{
int ret=QMessageBox::warning(this,"消息","是否保存此文件?",QMessageBox::Yes|QMessageBox::No);
switch(ret){
case QMessageBox::Yes:
break;
case QMessageBox::No:
return;
}
if(!filename.isEmpty())
{
filename=QFileDialog::getSaveFileName(this,"save file");
}
QFile file(filename);
if(file.open(QIODevice::WriteOnly)){
QTextStream stream(&file);
file.write(te->toPlainText().toLatin1());
}
file.close();
}
void MainWindow::savefile1()
{
filename=QFileDialog::getSaveFileName(this,"save file");
}
void MainWindow::closefile()
{
dockWidget->close();
}
void MainWindow::colorchange()
{
QColor color = QColorDialog::getColor(Qt::red,this,"choose color");
if (color.isValid()){
te->setTextColor(color);
}
}
void MainWindow::fontchange()
{
bool ok;
QFont data= QFontDialog::getFont(&ok,this);
if(ok)
te->setFont(data);
}
MainWindow::~MainWindow()
{
}
由于图标等不好操作上传的原因,读者可自己制作一个qrc文件,替换程序中的图片文件即可。