QT编程实例1--简单的文本编辑器(上)

QT编程实例1--简单的文本编辑器(上)




      本文将使用已学习的QT编程的知识,结合创建主窗口的方法和流程编写一款简单实用的文字编辑器,完成后的效果图如上。首先我们先分析写这样一个程序的大体思路,用到哪些知识点,程序的主要框架;然后是各个部分的实现;最后做个总结。写这样的程序可以使用QtCreat,当然也可以直接敲代码,这里我选择采用后者。

      【思路】Qt的QMainWindow类提供了一个应用程序主窗口,包括菜单栏、多个工具栏、状态栏、中心部件等。那么我们做这样一个文字编辑器的程序,可以基于这样一个类来实现。虽然这并不是一个特别复杂的程序,代码量在500行内,但是对初学的咱们来说,还是有些小难度的。因此,我们可以先实现一些最简单的功能,然后在逐渐丰满我们的整个程序。在程序的调试过程中也可以参照上面的思路,先确保一小部分或基本的功能没有问题,然后再慢慢扩大范围,直至找到问题的所在并逐个解决。

      【框架及实现】工程将主要有三个文件组成:mainwindow.h头文件、mainwindow.cpp实现文件和application.qrc资源文件组成。当然作为一个工程,还有一些其他文件如mainwindow.pro、Makefile及一些中间生成的文件。我们大量的工作量是耗费在mainwindow.h和mainwindow.cpp这两个文件的编写上的。那么在两个文件中要安排写哪些东西了?首先看mainwindow.h这个文件。

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

//#include <QtGui/QApplication>
//#include <QMainWindow>
#include <QtGui>
/*
QT_BEGIN_NAMESPACE
class QAction;
class QMenu;
class QPlainTextEdit;
QT_END_NAMESPACE
*/
class MainWindow:public QMainWindow
{
    Q_OBJECT           
public:
    MainWindow();
protected:
	void closeEvent(QCloseEvent *event);
private slots:
	void newFile();
	void open();
	bool save();
	bool saveAs();
	void about();
	void documentWasModified();
private:
	void createActions();
	void createMenus();
	void createToolBars();
	void createStatusBars();
	void readSettings();
	void writeSettings();
	bool maybeSave();
	void loadFile(QString fileName);
	bool saveFile(const QString &fileName);	
	void setCurrentFile(const QString &fileName);
	QString strippedName(const QString &fullFileName);

	QTextEdit *textEdit;
	//QPlainTextEdit *textEdit;
	QString curFile;

	QMenu *fileMenu;
	QMenu *editMenu;
	QMenu *helpMenu;

	QToolBar *fileToolBar;
	QToolBar *editToolBar;

	QAction *newAct;
	QAction *openAct;
	QAction *saveAct;
	QAction *saveAsAct;
	QAction *exitAct;
	QAction *cutAct;
	QAction *copyAct;
	QAction *pasteAct;
	QAction *aboutAct;
};

#endif // MAINWINDOW_H

/****************************************************************************************************

补充知识--基本概念

1、类的继承,是新的类从已有类那里得到已有的特性。或从已有类产生新类的过程就是类的派生。原有的类称为基类或父类,产生的新类称为派生类或子类。
2、派生类的声明:
class 派生类名:继承方式 基类名1, 继承方式 基类名2,...,继承方式 基类名n
{
    派生类成员声明;
};
3、一个派生类可以同时有多个基类,这种情况称为多重继承,派生类只有一个基类,称为单继承。直接派生,间接派生。
其他详见博客:http://www.cnblogs.com/fzhe/archive/2012/12/25/2832250.html
*****************************************************************************************************/

      class MainWindow:public QMainWindow{ }这句声明了定义的MainWindow类继承派生了Qt自带的类QMainWindow,下面是这个类声明的主体。在派生出来的类中我们新增加了我们所需要的元素,如一个公共函数、一个保护函数、几个私有的槽函数、私有函数及一些变量。void closeEvent(QCloseEvent *event)函数为一个虚函数,在QMainWindow类里面已经有定义,但是这里把它重写了。该函数是在关闭窗口时做一些其他的事情。

 

By:霜月孤鸟

2015.1.13

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值