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();
}