QT学习6

QT---Notepad
这个算是比较复杂的一个了
生成过程,还是新建空的项目,不要加入界面文件,因为这个程序中所有界面都是用代码来实现的。

插入一个main.cpp,再插入一个类Notepad,继承QMainWindow(会生成一个notepad.h和一个notepad.cpp)

//notepad.h
#ifndef NOTEPAD_H
#define NOTEPAD_H

#include <QMainWindow>
#include <QtGui>

class Notepad : public QMainWindow
{
    Q_OBJECT
public:
    Notepad();
    
signals:
//私有的插槽(这个地方很关键,上次函数不能调用,就是因为这个地方出的问题)
private slots:
    void open();
    void save();
private:
    QTextEdit *textEdit;

    QAction *openAction;
    QAction *saveAction;
    QAction *exitAction;

    QMenu *fileMenu;
};

#endif // NOTEPAD_H

//notepad.cpp
#include "notepad.h"

Notepad::Notepad()
{
    //定义三个QAction
    openAction=new QAction(tr("&Open"),this);
    saveAction=new QAction(tr("&Save"),this);
    exitAction=new QAction(tr("&Exit"),this);
    //信号与插槽连接通信
    connect(openAction,SIGNAL(triggered()),this,SLOT(open()));
    connect(saveAction,SIGNAL(triggered()),this,SLOT(save()));
    //注意这个地方,Exit按钮是跟qApp的quit()相关联的
    connect(exitAction,SIGNAL(triggered()),qApp,SLOT(quit()));
    //设置菜单,并增加菜单项
    fileMenu=menuBar()->addMenu(tr("&File"));
    fileMenu->addAction(openAction);
    fileMenu->addAction(saveAction);
    fileMenu->addSeparator();
    fileMenu->addAction(exitAction);
    //创建TextEdit
    textEdit=new QTextEdit;
    //设置窗体的中央部件
    setCentralWidget(textEdit);
    //设置标题
    setWindowTitle(tr("Notepad"));
};
//打开相关操作,基本都能看明白
void Notepad::open()
{
    QString fileName=QFileDialog::getOpenFileName(this,tr("Open"),
         tr("Text Files(*.txt);;C++ Files(*.cpp *.h)"));
    if(fileName!="")
    {
        QFile file(fileName);
        if(!file.open(QIODevice::ReadOnly))
        {
            QMessageBox::critical(this,tr("Erro"),tr("Could not open file"));
            return;
        }
        QTextStream in(&file);
        textEdit->setText(in.readAll());
        file.close();
    }

};
//保存相关
void Notepad::save()
{
    QString fileName=QFileDialog::getSaveFileName(this, tr("Save File"), "",
                 tr("Text Files (*.txt);;C++ Files (*.cpp *.h)"));
    if(fileName!="")
    {
        QFile file(fileName);
        if(!file.open(QIODevice::WriteOnly))
        {
        }
    else
    {
        QTextStream stream(&file);
        stream<<textEdit->toPlainText();
        stream.flush();
        file.close();
    }
    }
};

//main.cpp
#include <QtGui/QApplication>
#include "notepad.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Notepad no;
    no.show();
    return a.exec();
}



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值