1 / 45

第 8 章 linux 集成开发环境的使用

第 8 章 linux 集成开发环境的使用. 内容. KDevelop 集成开发环境的使用 QT 程序设计基础. 主要内容. KDevelop 简介 KDevelop 的界面布局 KDevelop 提供的模板 模板种类 模板参数 基本框架 利用 KDevelop 创建程序 创建项目 编辑项目 运行程序. KDevelop 简介. 名称由来 KDE Develop Environment 的缩写 维护 由 KDevelop 项目管理维护 许可制度 GPL 特点 应用项目模板辅助创建基本的程序框架,简化新项目的创建;

Download Presentation

第 8 章 linux 集成开发环境的使用

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第8章 linux集成开发环境的使用

  2. 内容 • KDevelop集成开发环境的使用 • QT程序设计基础

  3. 主要内容 • KDevelop简介 • KDevelop的界面布局 • KDevelop提供的模板 • 模板种类 • 模板参数 • 基本框架 • 利用KDevelop创建程序 • 创建项目 • 编辑项目 • 运行程序

  4. KDevelop简介 • 名称由来 • KDE Develop Environment 的缩写 • 维护 • 由KDevelop项目管理维护 • 许可制度 • GPL • 特点 • 应用项目模板辅助创建基本的程序框架,简化新项目的创建; • 类向导、signal/slot向导等手段辅助代码的生成; • 代码编辑器功能丰富,可以实现语法着色、参数补全、格式化代码等功能; • 提供项目的多种视图,可以方便的实现文件、函数、类的迅速定位; • 自动调用编译、链接、配置等开发工具,实现对各种工具的集成使用; • 支持多种语言、多种应用的开发

  5. KDevelop简介 • 依赖的软件 • KDE2.2.2或KDE 3.0.X,www.kde.org • g++ >2.8,gcc.gun.org • GNU make,www.gnu.org • perl 5.004,www.perl.com • autoconf 2.13,www.gnu.org • automake 1.4,www.gnu.org • flex 2.5.4,www.gnu.org

  6. KDevelop的使用 • 环境配置 • 第一次启动KDevelop会自动启动配置程序; • 通过【主菜单/编程/更多编程工具/KDevelop Setup】重新运行配置向导 ; • 配置向导: • 通常可以选择向导的默认选项

  7. 主窗口 菜单 工具栏 标签树状视图 标签输出视图 文档编辑视图 KDevelop的使用 • KDevelop主界面 状态条

  8. 主界面 • 功能简介 • 主窗口:综合了所有视图和功能 • 菜单:以菜单形式将所有功能组织起来 • 工具条:提供快速定位功能的方式 • 树状视图: • 类视图:以类为节点 • 组视图:以组为节点 • 文件视图:以文件、文件夹为节点 • 书视图:以帮助文档为节点 • 输出视图: • 消息 • 标准输出

  9. 主界面 • 标准错误输出 • Konsole • 断点 • 编辑视图 • 编辑源文件的主要视图,在没有创建源文件时,视图为不可用状态。 • 状态条 • 键盘状态 • 编辑状态 • 当前行列编号

  10. 创建项目 • 功能菜单 • 【项目/新建】 • 项目: • 程序所有资源的总称; • 源文件 • 资源文件(图标,光标等) • 数据文件 • 其它相关文件 • 一个项目对应一个目录 • KDevelop提供了一系列项目模板,简化项目的创建过程。

  11. Kde程序 Gnome程序 Qt程序 终端程序 其它程序 创建项目 • 选择项目模板(本例中选择【终端程序/C++】)

  12. 提供的模板 • KDE程序 • KDE mini模板:只有一个主窗口元素(Widget)的应用程序; • KDE Normal模板:支持文档-视图模型的、有菜单、工具条、状态条的应用程序; • KDE MDI:支持文档-视图模型的MDI窗口; • KDE KControl Module:KDE控制中心模块; • Konqueror 插件:创建Konqueror网页浏览器插件; • KDE Kicker Applet:创建可以放在KDE工具面板上的小程序; • KDE Kio Slave:创建Kio Slave,Kio Slave是KDE下所有协议的基础; • KDE Desktop Theme:利用c++创建KDE本地桌面外观主题;

  13. 提供的模板 • Gnome • 普通:包含菜单、工具条、状态栏的应用程序; • Qt • Qt SDI:基于Qt的SDI窗口程序; • QT MDI:基于Qt的MDI窗口程序; • Qext MDI:创建基于Qt和Qext的MDI窗口程序 ; • 终端程序 • c:c语言终端程序; • c++:c++语言终端程序;(本例中选择C++) • 其它: • 只有一个模板,创建一个空的项目,其它所有模板都无法使用时,可以使用这个模板创建空项目。

  14. 必需参数 项目名称 本例中将项目名称设为Guess 模板参数设置 • [终端程序/C++]模板参数设置

  15. 其它模板参数设置 • vcs版本控制参数设置(取默认值)

  16. 其它模板参数设置 • .h文件模板(取默认值)

  17. 其它模板参数设置 • .cpp文件模板(取默认值)

  18. 创建项目框架 • 点击创建按钮创建项目框架

  19. main函数 main函数源码 项目框架 • KDevelop自动创建了一个包括main主函数的项目框架

  20. 项目框架 • 项目框架提供的功能 • 编译项目 • 【建立/配置】 • 【建立/连编】 • 【建立/执行】 • 功能: • 在终端窗口打印一条字符串

  21. QT 程序设计基础 • QT简介 • 举例 • 槽和信号

  22. QT简介 • Qt是Trolltech公司的标志性产品,是一个跨平台的C++图形用户界面(GUI)工具包。 • Qt 应用程序接口与工具兼容于所有支持平台,让开发员们掌握一个应用程序接口,便可执行与平台非相关的应用开发与配置。 • Qt/Windows  (Windows XP, 2000, NT 4, Me/98) • Qt/Mac  (Mac OS X) • Qt/X11  (Linux, Solaris, HP-UX, IRIX, AIX等) • Qt对不同平台的专门API进行了 专门的封装(文件处理,网络等)

  23. Trolltech的双重授权模式 Trolltech公司提供两种授权模式,一种用于商业性质的授权,一种用于免费的开源授权

  24. 例: • 运行QTDesigner,点击file->new,新建一个项目,这里选择C++ project.

  25. 提示项目的保存路径:

  26. 点击file->new,点击C++ Source File,点击确定,输入相应的代码。

  27. 编译,运行 • 第一步:在命令行使用qmake命令产生Makefile文件: $qmake unnamed.pro • 第二步:使用make命令进行编译: $ make • 第三步:运行。 $ ./unnamed

  28. 将上面的例子换一种方式实现 • 点击file->new,新建一个项目并保存。 • 点击菜单file->new,新建一个窗口,选择Dialog。

  29. 在窗口上添加textlabel标签和pushbutton按钮。

  30. 修改标签和按钮的属性; • 为关闭按钮添加事件,选择菜单 edit->connections ,点击new,在新增项中,Sender选择pushbutton1,signal选择clicked,receiver选择form1,slot选择close()。

  31. 点击file->new,选择C++ mainfile(main.cpp)

  32. QT自动生成如下代码:

  33. 生成Makefile文件,编译并运行(方法和前面相同)生成Makefile文件,编译并运行(方法和前面相同)

  34. 槽(slot)和信号(signal) 槽和信号术语:

  35. • 槽是标准的成员函数,但他们增加了一些特殊的功能,使他们能够连接到信号,每当槽所连接的信号被发射时,槽(函数)就被执行。

  36. 信号 • 是一种特殊类型的成员函数,他们被定义为当某个事件发生时就发射,之后执行所有连接的槽(函数),执行的顺序是任意的。

  37. 槽和信号的使用 • 方式一:使用预定义的槽和信号 • 方式二:用户自定义槽和信号 在编写QT程序时,经常自定义槽,但不经常自定义信号,因为预定义好的信号已经基本够用了。

  38. 元对象编译器(Meta Object Compile MOC) • C++编译器不能理解自定义槽和信号的语句,MOC扫描源文件中用于自定义槽和信号的语句,并将它生成C++编译器能够识别的代码。 • 当在类声明中定义好槽和信号后,需要用MOC来读取文件,生成有效的C++代码。 如:$moc infile.h –o outfile.moc • 将.moc文件和.cpp文件一起编译链接 g++ -c outfile.moc –o outfile.o g++ -c infile.cpp –o infile.o g++ -lqt outfile.o infile.o –o myprogram

  39. 创建用户槽 • Class MyMainWindow:public QWidget { Q_OBJECT public: MyMainWindow(); public slots: MyExitSlot(); } 具有用户自定义槽的类必须使用这个宏。 槽的标志

  40. 创建用户槽和信号(举例) public slots: //自定义槽, void btnMessage(); void slotTest(QString); signals: //自定义信号, void sigTest(QString str); //自定义信号. private: QPushButton *m_pushBtnMsg; }; //customwnd.h #ifndef __CUSTOM_WINDOW_H__ #define __CUSTOM_WINDOW_H__ #include <qapplication.h> #include <qwidget.h> #include <qmessagebox.h> #include <qpopupmenu.h> class CustomWnd:public QWidget { Q_OBJECT //如果要自定义槽和消息,必须在这里调用这个宏,否则自定义的槽和消息将不会起作用 public: CustomWnd(QWidget *parent = 0, const char *name = NULL); ~CustomWnd();

  41. //customwnd.cpp #include "customwnd.h" #include <qpushbutton.h> CustomWnd::CustomWnd(QWidget *parent, const char *name) :QWidget(parent, name) { m_pushBtnMsg = new QPushButton("MessageButton", this); m_pushBtnMsg.show(); connect(m_pushBtnMsg, SIGNAL(clicked()), this, SLOT(btnMessage())); //将自定义槽连接到内部信号, 这里就跟消息映射函数相似. connect(this, SIGNAL(sigTest(QString)), this, SLOT(slotTest(QString))); //将自定义槽连接到自定义信号 }

  42. CustomWnd::~CustomWnd() { delete m_pushBtnMsg; } void CustomWnd::btnMessage() { QMessageBox::warning(this, "WARNING", "just for test: will emit test signal"); emit sigTest(QString("Test Signal")); //发出自定义信号 } void CustomWnd::slotTest(QString str) { QMessageBox::warning(this, "Customized signal test", str); }

  43. //test.cpp#include "customwnd.h"int main(int argc, char **argv){    QApplication a(argc, argv);    CustomWnd wnd;    a.setMainWidget(&wnd);    wnd.show();    return a.exec();}

  44. 编译使用用户槽程序 • $ moc customwnd.h –o customwnd.moc • 在customwnd.cpp文件中加入: #include <customwnd.moc> • 再和test.cpp文件连接: $ g++ -lqt customwnd.cpp test.cpp –o myprogram

  45. 用户信号的创建 • 一般情况下预定义的信号已经够用了,所以自定义信号的情况较少。

More Related