c++界面开发_QT开发(三)——GUI原理分析

一、命令行程序

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

命令行程序的特点:

A、基于顺序结构执行

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

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

命令行程序适用场合:

A、单任务场合

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

C、服务器应用场合

二、GUI程序

GUI程序的特点:

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

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

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

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

GUI程序适用场合:

A、多任务场合

B、强用户交互场合

C、非专业计算机用户

GUI程序运行模式:

fe0990932eeb439c8ef6aef94937aabe

GUI程序消息处理模型:

511c456da539461490e90b9925066234

三、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

#include

#include

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开发环境命令行

5a4a708090f6489083930b77e437ef2d

点击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() << "hello";

B、断点调试法

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/434144.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[Ubuntu] Simple way to pass passwords on a shell script

here is the code for example: #!/bin/bashecho -e "your_password\nyour_password" | sudo /home/davidhhuan/the_shell_you_want_to_run.sh转载于:https://www.cnblogs.com/davidhhuan/archive/2012/11/12/2765983.html

解决链接错误:error LNK2001: 无法解析的外部符号 __iob

该错误主要是由于静态库在VC6编译而主程序在VC2005编译&#xff0c;大家用的CRT不同。解决办法&#xff0c;代码中增加 #ifdef __cplusplus extern "C" #endif FILE _iob[3] {__iob_func()[0], __iob_func()[1], __iob_func()[2]}; 此错误的产生根源&#xff1a; 在…

pycharm使用_后端开发使用pycharm的技巧

1、使用说明首先说明&#xff0c;本文所使用的功能为pycharm专业版所支持&#xff0c;其他版本如社区版&#xff0c;教育版&#xff0c;则不一定支持。作为一名后端开发&#xff0c;我猜你的桌面上一定打开着一系列的软件&#xff0c;用作开发调试工具&#xff0c;比如navicat数…

关于javafx支持IOS、android等智能手机解决方案

这两天回到javafx社区逛了一下&#xff0c;发现对这个问题讨论很多... 看完后&#xff0c;有两种意见。 第一种&#xff1a;是主流的&#xff0c;包括javafx社区以及绝大部分oracle内部javafx开发人员的意见&#xff1a;应该要支持&#xff0c;而且想把这个事情加入roadmap&…

java视窗_java-预览窗口(如Windows 7任务栏显示已打开的...

一个极其简单的实现.import java.awt.*;import java.awt.image.*;import java.awt.event.*;import javax.swing.*;class ShowPreviews {class ToolTipListener extends MouseAdapter {JWindow toolTip;JLabel label;Component preview;ToolTipListener(Component preview) {thi…

linux(ubuntu)下分区和格式化sd卡

我的手机sd卡需要分成两个分区&#xff0c;在windowxp下面死活搞不成。主要的问题是&#xff0c;window只认识sd卡的第一个分区。有人用修改驱动程序&#xff0c;让windows把sd卡认成日立的microdisk&#xff0c;分区和格式化也可以完成。但是在我的笔记本上&#xff0c;sd读卡…

@value 静态变量_Java中的变量——通过示例学习Java编程(4)

作者&#xff1a;CHAITANYA SINGH来源&#xff1a;通过示例学习Java编程&#xff08;4&#xff09;&#xff1a;Java中的变量-方家话题​www.koofun.com变量是用来存放可以更改的值的容器。例如&#xff0c;当我写int i 10; 这里变量名是i&#xff0c;它与值10相关联&#xff…

nmf算法 python_NMF算法简介及python实现

[ pca算法用于原始数据维数较高时对数据进行降维 关于pca算法的学习&#xff0c;有一篇分析特别详细的论文http://www.cs.otago.ac.nz/cosc453/student_tutorials/principal_componen基本原理NMF&#xff0c;非负矩阵分解&#xff0c;它的目标很明确&#xff0c;就是将大矩阵分…

linux 修改消息队列大小

环境&#xff1a;red hat5 linux消息队列的配置文件为&#xff1a; /etc/sysctl.conf ,里面&#xff1a; msgmax:  一条最大消息的字节数 msgmnb&#xff1a; 一个消息队列总共最大字节数 而我的系统这2个值都默认是65536&#xff0c;假如发一条65536长度的消息&#xff0c;…

龙芯购买MIPS指令集的授权

以前指责龙芯购买MIPS授权的那篇文章让人啼笑皆非&#xff0c;只能用无知来概况我在IT从业多年&#xff0c;非常赞同龙芯购买MIPS指令集的授权&#xff01;分几个方面来阐述&#xff1a;&#xff08;1&#xff09;什么是指令集&#xff1f;指令集好像英文的26个字母&#xff0c…

python网络爬虫_Python爬虫实战之网络小说

今天和大家分享的是python爬虫实战&#xff0c;由于本人最近迷上了看网络小说&#xff0c;学生党又穷&#xff0c;只能看看网络dao版小说&#xff0c;现在这类dao版小说网站可以说非常的多&#xff0c;但是所有的网站进去都可以看见一大把的广告信息&#xff0c;非常影响我们的…

java反射机制详解_JAVA反射机制详解_JSP/Java编程_互联网开发技术网_传播最新的编程技术_php361.com...

今天&#xff0c;下午在和朋友聊天的时候&#xff0c;聊起了反射这个话题。我们就从下面这个段简单的代码开始吧。这个代码输出什么&#xff0c;想必大部分的读者跟我一样&#xff0c;会很快地知道答案&#xff1a;0 1 2 3 4 5 6 7 8 9。事实也是如此&#xff1a;朋友这个时候就…

实时修改和读取webconfig

ConfigurationManager.AppSettings.Set("MailUser","3" );ConfigurationManager.AppSettings.Set("MailPassword","2");ConfigurationManager.AppSettings.Set("MailEnable","1" ); 只能临时保存实时修改webconfi…

activity 点击后传递数据给fragment_Fragment 新特性 : Fragment Result API 使用以及源码分析

原标题: Android Fragments: Fragment Result原文地址: https://proandroiddev.com/android-fragments-fragment-result......原文作者: Husayn Hakeem今年 Google 推出了 Fragment Result API 和 Activity Results API&#xff0c;用来取代之前的 Activity 和 Fragment 之间通…

linux动态库与静态库混合连接

在应用程序需要连接外部库的情况下&#xff0c;linux默认对库的连接是使用动态库&#xff0c;在找不到动态库的情况下再选择静态库。使用方式为&#xff1a; gcc test.cpp -L. -ltestlib 如果当前目录有两个库libtestlib.so libtestlib.a 则肯定是连接libtestlib.so。如果要指定…

java运算函数_Java中的数学计算函数

Math类&#xff1a;java.lang.Math类中包含基本的数字操作&#xff0c;如指数、对数、平方根和三角函数。java.math是一个包&#xff0c;提供用于执行任意精度整数(BigInteger)算法和任意精度小数(BigDecimal)算法的类。java.lang.Math类中包含E和PI两个静态常量&#xff0c;以…

从无头单链表中删除节点

#include<iostream> using namespace std;struct Node{int data;Node* next; };void deleteNode(Node* p) {p->datap->next->data; //将p后的节点的数值赋给p的data域p->nextp->next->next; //将p后的节点删除&#xff0c;即完成了删除节点p的效果…

android卡片层叠效果_ReactNative之Android绝对布局position:#x27;absolute#x27;问题

工作中会遇到各种各样的问题&#xff0c;ReactNative开发也是填坑不止。比如最近在开发需求中&#xff0c;就遇到一个问题。在一个卡片类型的右上角添加一个删除按钮。使用了绝对布局position:absolute属性&#xff0c;在Android上却无法正常显示&#xff0c;很是烦恼。有一个相…

java监听机制_详解java的事件监听机制和观察者设计模式

首先说说监听器&#xff1a;监听器就是一个实现特定接口的普通java程序&#xff0c;这个程序专门用于监听另一个java对象的方法调用或属性改变&#xff0c;当被监听对象发生上述事件后&#xff0c;监听器某个方法将立即被执 行。java的事件监听机制可概括为3点&#xff1a;1,ja…

敏捷开发的6个实战经验

在大型企业中经常是各种软件开发模式混用&#xff0c;一些采用敏捷开发&#xff0c;一些则是采用传统的瀑布式或RUP&#xff08;统一软件开发过程&#xff09;。敏捷开发&#xff0c;相对传统软件开发模式&#xff0c;它主要是针对快速变化的需求&#xff0c;不断优化管理流程&…