QT学习6

来源:互联网 发布:js的insertbefore参数 编辑:程序博客网 时间:2024/05/18 00:10
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_OBJECTpublic:    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();}



原创粉丝点击