码迷,mamicode.com
首页 > 系统相关 > 详细

嵌入式linux QT开发(三)——GUI原理分析

时间:2016-10-01 06:48:13      阅读:224      评论:0      收藏:0      [点我收藏+]

标签:嵌入式 linux qt gui原理

嵌入式linux QT开发(三)——GUI原理分析

一、命令行程序

    命令行程序是面向过程的程序设计。

命令行程序的特点:

    A、基于顺序结构执行

    B、程序执行过程中不需与用户交互

    C、程序执行结束给出最终运行结果

命令行程序适用场合:

    A、单任务场合

    B、无交互、简单交互场合

    C、服务器应用场合

 

二、GUI程序

GUI程序的特点:

    A、基于消息驱动模型的程序

    B、程序执行依赖用户交互过程

    C、程序执行过程中实时响应用户操作

    D、一般程序执行后不会主动退出

GUI程序适用场合:

    A、多任务场合

    B、强用户交互场合

    C、非专业计算机用户

GUI程序运行模式:

技术分享

GUI程序消息处理模型:

技术分享

一、GUI程序开发原理

现代操作系统都支持GUI程序开发,特点如下:

A、操作系统提供原生SDK支持GUI程序开发

B、GUI程序开发是现代操作系统的主流技术

C、不同操作系统上的GUI开发原理相同

D、不同操作系统上的GUI SDK不同

GUI程序开发原理:

A、GUI程序在运行时会创建一个消息队列

B、系统内核将用户操作翻译为对应的程序消息

C、程序在运行过程中需要实时处理消息队列中的消息

D、当队列中没有消息时,程序将处于停滞状态

GUI程序开发过程:

A、创建窗口、窗口元素GUI界面

B、在消息处理函数中根据程序消息做出不同相应

四、QT的本质

1、面向对象的GUI程序设计

操作系统提供了创建界面元素所需要的函数,依次调用不同功能的函数就可以创建出界面元素,但操作系统提供的原生函数无法直接映射到界面元素。根据面向对象程序设计思想,将界面元素抽象为类,GUI界面的创建过程就是组合不同界面元素对象的过程。

2、QT的本质

QT是利用面向对象程序设计思想开发的一套GUI组件库,QT将不同操作系统的GUI细节封装于类内部,并提供了一套跨平台的类用于GUI程序开发。

QT遵循经典的GUI程序开发模式。

五、QT实例

1、实例源码

#include <QApplication>

#include <QMainWindow>

#include <QPushButton>

 

int main(int argc, char* argv[])

{

    QApplication a(argc, argv);

    QMainWindow w;

    QPushButton b(&w);

    

    b.setText("Hello QT!");

    

    w.show();

    

    return a.exec();

}

2、QT开发环境命令行编译

A、进入QT开发环境命令行

技术分享

点击QT 4.7.4 Command Prompt进入QT开发环境命令行环境。

B、进入源程序所在目录

C、根据源码生成工程文件

qmake -project

生成过程文件xxxxx.pro

D、根据工程文件生成Makefile文件

qmake

生成Makefile、Makefile.Debug、Makefile.Release文件和release、debug目录

E、编译

make

编译生成可执行文件xxx.exe

3、QT IDE开发环境

QT Creator是QT的可视化集成开发环境。

QT Creator环境的调试方法:

A、log调试法

在代码中加入一定打印语句,打印出程序状态和关键变量的值

Log打印需要添加#include <QDebug>

qDebug() << "hello";

B、断点调试法

QT Creator开发环境打开工程后,可以在相应代码行设置断点,当程序运行到断点行时会暂停运行,设置条件断点时,当满足条件时,程序才暂停运行。






本文出自 “生命不息,奋斗不止” 博客,谢绝转载!

嵌入式linux QT开发(三)——GUI原理分析

标签:嵌入式 linux qt gui原理

原文地址:http://9291927.blog.51cto.com/9281927/1858081

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!