用Qt设计一简易的记事本

此记事本有打开、关闭文件,保存文件、另存文件等功能,这些功能有些还不完善,以后会慢慢补全。

源代码如下:

#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文件,替换程序中的图片文件即可。

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值