此记事本有打开、关闭文件,保存文件、另存文件等功能,这些功能有些还不完善,以后会慢慢补全。
源代码如下:
#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文件,替换程序中的图片文件即可。