QNX下Photon编程(二)简单例子

QNX screen使用介绍 第一章 一、screen介绍 QNX screen系统是一个图形框架,提供开发时图像显示功能,抽象对外统一接口,屏蔽底层硬件差异 screen是基于client/server模型,screen进程是server程序,libscreen/libEGL/libGLESv2提供了对外的API函数 screen支持应用程序渲染和硬件加速 screen支持插件,加载特定的硬件模块,例如显示硬件模块,2D/3D加速器(GPU)和输入设备等资源 ... 阅读详情

这是一个系列讲座,从官方文档《photon_prog_guide》而来,主要讲述QNX下的GUI编程-Photon编程,主要针对初学者。

 

 

第一个例子:

首先我们创建一个QNX PhotonAppbuilder project,这时会自动打开PhAB工具。PhAB工具界面如下所示:

 

 

 

我们在弹出的对话框中选择新的应用程序样式为base window。

 

我们在右侧的widget palette中选择label 并回到我们的窗口上点击一下,发现新创建了一个label,之后我们到资源控制面板并选择label的Label Text属性,修改为“Hello World!”

 

在PhAB中选择Build→Generate UI,这时将生成界面代码,然后回到QNX Momentics IDE,编译工程并下载到目标机运行,可以查看到刚才编辑的效果。

 

 

第二个例子:

下面我们在窗口上添加一个Button,并修改其Bevel Width属性为6,Font属性为Text Font,设置Horz Alignment属性为Pt_CENTER,在Basic Flag属性中添加Pt_TOP_INLINE、Pt_BOTTOM_INLINE、Pt_LEFT_INLINE、Pt_RIGHT_INLINE属性、修改Color:Fill属性,查看修改后的效果。

 

Label控件可以通过设置Label Type属性为Pt_IMAGE使其显示一个图片而不显示文字,选择Label Image属性可以编辑Label的显示图片。

 

添加一个PtMultiText Widget显示一个多行文本。编辑Text String属性可以修改显示的文字。

 

添加一个PtList Widget可以显示一个选择列表。修改List of Items可以修改选择项。

 

很多时候我们可能需要创建相同表现的widget,此时我们可以创建一个widget模板。选择一个widget并从右键菜单选择Define Templete创建一个widget 模板。当成功创建一个模板widget之后我们可以从PhAB的window菜单选择Show Templetes显示模板并将其添加到我们的界面中去。

 

第三个例子:

 

使用PhAB,我们可以通过两步创建菜单:

  1. menu button,点击时显示菜单;
  2. menu module,包含菜单项

 

在一个应用程序中添加一个Menu Bar,并添加两个Menu Button,设置它们的instant name分别为base_file和base_help ,同时设置Label Text属性为File和Help。

 

 

在Project菜单中选择Add Menu,并将其name修改为filemenu,修改Menu Item添加菜单项,并将新菜单项的inst name修改为file_new,同样创建file_open,file_save,之后再新建一个Separator菜单项,最后建立一个file_quit菜单项。

 

为了在点击File菜单按钮时显示file菜单,我们需要将Arm回调关联到这个按钮。选择base_file按钮的Arm回调,由于我们想弹出一个菜单,选择Menu。之后在Name下拉菜单中选择我们的filemenu。

回到filemenu的编辑,我们选择file_quit菜单项,添加一个Quit回调函数。

 

选择Build->Generate UI生成界面代码,然后在PhAB中选择菜单Window->Show Project看到文件列表中的Quit.c,选择他并点击Edit按钮,或者直接双击来修改quit函数。

 

之后运行程序观看效果。

 

 

第四个例子:

接上面的程序,我们创建一个helpmenu菜单,并且建立菜单项help_help,help_about,同时我们建立help_about菜单项的callback为一个名为aboutdlg的对话框对象(由于对话框现在还不存在,我们只能在列表框中手动输入对话框名称)。在setup function框中,我们输入aboutdlg_setup,这里指定了aboutdlg在实例化时将要调用的函数。同时对话框的Location属性我们设置为Center Screen。最终设置的效果如下图:

 

选择apply之后PhAB弹出一个对话框让我们选择aboutdlg应该是什么类型,我们选择Plain类型。

 

下面我们选择aboutdlg对话框,放两个PtLabel对象到对话框上,再放一个按钮。设置一个Label名字为about_version并什么都不显示,另一个显示文字“about this demo”。Button的名字为about_done,显示文字“Done”。并将该按钮的active callback设置为Done类型。

 

下面添加相应事件代码:

 

编译代码并执行可以查看效果。

 

 

 

第五个例子:

 

 

 

接上面的例子,我们从Project菜单选择新建一个Window,选择Plain样式并把Window的名字修改为newwin。

从新建的newwin的callback中我们选择window manager,添加newwin_close函数,回到Resource控制面板选择Notify,并确认选择Ph_WM_CLOSE标志。

 

把主窗口的filenew菜单项的回调修改为对窗口newwin,并选择Setup函数为newwin_setup。

 

在newwin中添加一个PtRect、四个PtButton并显示如下:

 

 

修改上面一行三个按钮中:

最左边那个名字为btn_red,显示文字Red,添加Active Callback为color_change函数。

中间那个名字为btn_green,显示文字Green,添加Active Callback为color_change函数。

最右边那个名字为btn_blue,显示文字Blue,添加Active Callback为color_change函数。

 

下面一个最大的按钮的text修改为“Change previous window's color”,名字为btn_prev,回调同样是color_change函数。

 

最后界面如图:

 

 

下面生成界面代码并修改:

 

newwin_setup.c修改:

 

 

color_change.c修改为:

 

 

 

newwin_close.c修改为:

 

 

编译运行,查看效果。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

qnx 上 screen display最简实例 本文主要介绍如何使用screen 相关接口来进行显示,并提供一个最基本的显示代码实例qnx7.1如下图所示,是 qnx 官方文档对Screen的介绍,其实它就是一个窗口系统(处理显示,输入设备,事件等)单纯的建立一个显示应用的主要的流程如下图所示(针对本文,第7条可以不用关心)qnx 上所有的显示应用都需要通过screen 来和底层对接;screen 是一个窗口系统;screen 对于软件渲染和硬件渲染分别有各自的接口; 阅读详情

相关推荐

qnx 上screen + egl + opengles 最简实例

本文主要介绍如何在QNX 系统上使用egl和opengles 控制GPU渲染一个三角形并显示到屏幕上,是一个最基础的screen + egl + opengles 使用实例qnx7.1egl1.4screen 是 qnx 上的窗口系统(和linux 上的 weston 类似),所有显示相关的应用都是通过它来对接底层的;通过调用screen 相关的接口生成 egl 所需要的窗口参数,opengles 负责具体的渲染;

lh0616的博客 2646

QNX SCREEN架构基本介绍

QNX SCREEN架构

kill150的专栏 4950

开始QNX上的图形编程,了解GF

进行了一些QNX编程的学习后,开始尝试QNX图形编程。在文本界面上输出各种字符串确实有点枯燥,很希望在QNX系统上显示一些图形界面。 首先看了一下资料,了解有那些方法可以实现图形编程。QNX官方文档里有三本是和图形相关的。 第一本是:《QNXR Neutrino Device

keyboardOTA的专栏 8153

QNX-Screen笔记

或者,调用img_decode_frame()(或img_load_file()等)的代码可以在调用img_decode_frame()、img_load_file()等之前进行设置,或者您可以依赖库的默认行为,即从系统RAM为图像和/或调色板分配内存(只有在尚未设置IMG_DIRECT、IMG_INDIRECT和IMG_PALETTE标志时,库才会执行此操作)。此行为意味着,对于每个信号量,在处理完信号量后,必须将对sem_open()的调用与对sem_close()的调用相匹配。

weixin_42463517的博客 1980

QNX发布6.4.0 alpha版了

 心血来潮,去qnx官方网站逛了一下,发现qnx已经发布6.4.0 alpha版了,马上把qnx版与windows版都下载下来安装体验一把,哈哈不错。1、安装过程基本没啥变化,license与6.3的没啥区别。2、安装好后,bootloader升级了,可以选择引导哪个映像文件。3、gui基本没啥变化,背景图默认还是6.3的那个。qnx就是实在,不像linux那些发行版,每发行一个版本,

Delores的专栏 3856

QNX下PCI设备实时驱动的设计

随着实时操作系统在工业领域的深入应用,硬件设备的实时驱动程序已逐渐成为了开发人员关注的焦点。掌握实时驱动的设计方法,能够从一定程度上解决由于设备实时驱动问题给实时应用在产品选型和功能实现等方面带来的不便。介绍了QNX下PCI总线设备的实时驱动的开发流程,并以某PCI设备为例,给出了实时驱动设计中包括定位设备、获取总线信息、地址映射、初始化配置以及伺服中断等功能的具体实现,最后将该驱动应用到某QNX目标机系统中,经过试验验证取得了很好的应用效果。

QNX Photon Gui and Multiple Threads

许多GUI应用程序是敏感的:你点击一个构件,应用程序立即就会响应。 其它应用程序是非常不敏感的。应用程序也许必须执行时间敏感型的操作或者和远程设备通讯,这些动作也许会使应用程序每次被阻塞一段时间。使这种类型的应用程序得到更多响应的一个方法是使用多线程。至少一个纤程总是可以处理用户的点击,而其它纤程可以处理阻塞的或长时间的操作。 但是现在两个线程能够在相同时间试图进入或更新同一个

CyberLabs的专栏 2413

手把手教你用Multisim仿真ADC接口电路(附峰值采样与电平抬升实战)

本文通过Multisim软件,手把手教学如何构建高保真ADC前端信号调理电路。核心实战内容包括峰值采样保持电路与电平抬升电路的设计、仿真与调试,旨在解决模拟信号接入ADC时遇到的幅度不匹配、负电压等问题,帮助电子设计者快速掌握关键接口电路的实现技巧。

ooo22的博客 259

QNX下Photon编程(一)Photon编程概述

这是一个系列讲座,主要讲述QNX下的GUI编程-Photon编程,主要针对初学者。 Photon Manager作为一个服务进程运行,并且创建一个三维的事件空间(包含二维空间的region和第三维--事件管理)。Photon Manager本身不会绘制任何东西,也不会管理鼠标、键盘等输入设备。Photon Manager只是一个中间件,一方面他提供给上层应用一系列标准编程接口,另一方面驱动

「行到水穷处,坐看云起时」 4770

星载SAR系统参数设计过程自动化方法研究

 本文提出了一种 SAR系统参数自动化设计的 方法。首先,针对部分参数仍需手工选取的现状 建立了最优化求解模型,并给出了 PRF 和波位位 置的优化选取结果,使参数设计流程更加高效便 捷。然后,针对 SAR 系统参数设计过程中部分技 术指标的评测结果不满足用户需求时无法自动调 节的现状,采用 PID 控制器对方位向天线尺寸、信 号带宽、PRF 等参数进行自动调节,使得方位分辨 率、距离分辨率、方位模糊比等技术指标向用户需 求值逐步靠近。通过仿真实验验证了该方法的可 行性,实现了SAR系统参数设计过程的自动化

qq_43416206的博客 1523

sap2000 api matlab,SAP2000_API入门指南.pdf

SAP2000_API入门指南北 京 金 土 木 软 件 技 术 有 限 公 司Beijing Civil King Software TechnologyCo., Ltd.SAP2000 API 入门指南余承飞 韦群跃 汤娣概述SAP2000 API 是从 SAP2000 V11 开始引进的,即应用软件编程接口。用户可以编写程序,通过API 随心所欲地调用 SAP2000...

weixin_42118423的博客 1941

QNX的深度嵌入过程

1.1           QNX目标系统嵌入利用QNX的模块性和和可裁剪性,其嵌入过程一般是:构建Buildfile -> 编译buildfile生成系统映象文件 -> 启动目标系统 ->嵌入式系统软件设计。其中的关键是构建Buildfile[19]。通常一个嵌入式系统需要一个可启动的操作系统映象文件(OS Image)。对于基于QNX的嵌入式一个应用系统,就是根据所选择的CPU

Delores的专栏 6523

华三模拟器实战:IPSec VPN穿越NAT的完整配置与调试(附常见问题排查)

本文详细解析了华三模拟器中IPSec VPN穿越NAT的完整配置与调试方法,包括基础环境准备、分步配置、ACL协调策略及高级故障排查。通过实战案例和关键参数解析,帮助网络工程师解决IPSec与NAT协同工作的典型问题,提升企业网络安全性。

weixin_33724046的博客 460

QNX

QNX 求助编辑百科名片    QNX界面 Gordon Bell和Dan Dodge在1980年成立了Quantum Software Systems公司,他们根据大学时代的一些设想写出了一个能在IBM PC上运行的名叫QUNIX(Quick U

junecau的专栏 1482

Qt入门教程100篇(已完结)

Qt5入门教程,Qt6入门教程。包含了: Qt环境搭建篇、Qt数据类型篇、Qt中STL篇、Qt核心篇、Qt核心对象QObject篇、Qt基础控件篇、Qt对话框篇、Qt高级控件篇、Qt数据模型篇、QSS篇、Qt文件篇 、Qt硬件编程、Qt的一些demo、Qt项目开发篇。......

小鱼酱的博客 15万+

基于Java+SpringBoot+微信小程序实现奶茶点单系统

再不用担心逢年过节的第一杯奶茶有没有人送了,制作一个奶茶点单系统自己当店主,开怀畅饮,一劳永逸。

商务合作 / 项目定制 / 学习交流。个人vx:lovely_wml 1万+

QNX SLM 学习笔记

背景 了解学习QNX -SLM机制 内容 参考 QNX7.0 SLM,若需了解更过内容可移步 SLM是什么 系统启动和监控:启动由许多必须按特定顺序启动的进程组成的复杂应用程序,下图是可以看到SLM在整个QNX BOOT的运行位置。 怎么用 可以通过slmctrl控制。但是我们通常使用xml配置的方式来确定进程的启动顺序。 SLM 配置概要 //根节点 <SLM:system> //组件,可以有多个组件 <SLM:component name="io-pkt">

moxiouhao的专栏 4786

WPF实现圆形菜单动态展开折叠效果

实现效果如下: 思路:根据子菜单个数计算旋转角度动态生成子菜单,并设置展开折叠动画。 步骤: 1、自定义按钮MyButton,建立展示图像属性DisplayImage public class MyButton : Button { public static readonly DependencyProperty DisplayImageProperty = DependencyProperty.Register("DisplayImage", typeof(

dnazhd的博客 3149

linux qnx 开发平台,QNX学习笔记之QNX Momentics IDE开发工具使用笔记

使用tftp,串口连接Target,下载内核1.uboot的使用1) 采用串口,波特率为115200, 采用QNX M IDE默认的设置,按任意键,即可进入uboot2) 常用的命令有:setenv serverip 192.168.0.1;设置服务器tftp地址setenv ipaddr 192.168.0.2;设置本地tftp地址tftp 20000 file; 通过tftp下载内核到0x...

weixin_42134338的博客 1338

单稳态触发器Multisim电路仿真——硬件工程师笔记

本文系统介绍了单稳态触发器的基础知识及其实现方式。主要内容包括:1)单稳态触发器的工作原理、电路结构、特点及应用;2)555定时器实现单稳态触发器的配置及工作过程;3)使用反相器和与非门实现积分型和微分型单稳态触发器的电路结构及工作原理。文章详细阐述了各种实现方式的特性、应用场景及设计考虑,为硬件工程师提供了实用的电路设计参考。最后还附有相关笔试面试题链接,便于读者进一步学习扩展。

XU157303764的博客 1877

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

QNX如何进阶

604D - QNX如何进阶 2012-06-04 15:40:11 标签:的 是 百度百科 拿来主义 鲁大师 原者著:这几天一直在晚上搜寻DSP+ARM及嵌入式开发的资料,想找一条快速入门的方法。遍历全贴,找到一个规律:乍一看GOoooooogle,Baidu上资料很多,除了必读的百度百科及Wiki,遍历完其他后,感觉精华也就那几篇,嫁来嫁去。大多者从00+转载到10+。纵

Blaider的专栏 2516

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

上一篇: QNX下Photon编程(一)Photon编程概述
下一篇: VS2008产生的.map不再生成行号信息?
Soloman
博客等级 码龄25年 171粉丝 159原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值