Fetch the repository succeeded.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>Giveda® Embedded Midware: Giveda®嵌入式中间件是一个高度可裁剪的、重量级的、嵌入式软件开发平台,并且,它为开发者提供了类似Qt的API。</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">Giveda® Embedded Midware
 <span id="projectnumber">1.2.0</span>
</div>
<div id="projectbrief">本文档受《版权法》、《版权公约》保护。深圳技达®版权所有</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- 制作者 Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li class="current"><a href="index.html"><span>首页</span></a></li>
<li><a href="namespaces.html"><span>命名空间</span></a></li>
<li><a href="annotated.html"><span>类</span></a></li>
<li><a href="files.html"><span>文件</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="搜索" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark"> </span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark"> </span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark"> </span>页</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">Giveda®嵌入式中间件是一个高度可裁剪的、重量级的、嵌入式软件开发平台,并且,它为开发者提供了类似Qt的API。 </div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><h1><a class="anchor" id="bg_brief_sect"></a>
背景与简介</h1>
<p>Qt是欧洲人创始的一个优秀的c++开发框架,社区庞大,资源丰富;但Qt太重量级了(Qt需要很多的RAM和ROM)。我很欣赏Qt的优雅,她提供的API非常直观、符合工程师的直觉、简单易用。在汲取了Qt精华的基础上,我做了“Giveda®嵌入式中间件”这个产品,它为开发者提供了类似Qt的API;它不仅仅是一个图形库,它还为你提供了非常友好易用的、人性化的tcp/udp/bluetooth方面的API接口,它是一个适用于MCU开发的重量级软件开发平台。为了更好适用于MCU开发,Giveda®嵌入式中间件包含了一个非常优秀的工程裁剪和配置系统,支持精确裁剪。<br/>
<br/>
Qt最早诞生在桌面领域,获得了很大成功,虽然Qt没能利用好自己的优势、在移动端操作系统的竞争中落败了,但时至今日Qt都依然是开发跨平台桌面应用的最佳选择。<br/>
我希望“Giveda®嵌入式中间件”能够像Qt一样成为一个别具一格的产品。我谨以此产品向Qt致敬,致敬Qt为世界做出的杰出贡献。<br/>
</p>
<dl class="section author"><dt>作者</dt><dd>明心,2008年软考排名全国前50的嵌入式系统设计师; <br/>
2015年获得深圳科创委资助; <br/>
2016年中国创新创业大赛电子信息行业全国总决赛入围者; <br/>
2018年获得宝安区科技局给予的“创客团队”资助; <br/>
GOSP项目作者; 2020年,GOSP成为码云GVP项目; <br/>
联系方式:mike6924@outlook.com </dd></dl>
<dl class="section version"><dt>版本</dt><dd>1.2.0 </dd></dl>
<dl class="section date"><dt>日期</dt><dd>开始于2014, 2014 ~ 2019 <pre>
<br/>
</pre> </dd></dl>
<h1><a class="anchor" id="os_co_sect"></a>
开源协作模型</h1>
<p>在 本项目中,参与者被划分为如下角色: <br/>
*) 会员:凡为本项目提供资源支持和/或人力支持的个人或实体,皆为本项目会员。 <br/>
*) 常务理事:负责项目的演进、整体目标、组织架构、日常事务。常务理事暂由发起人担任,随着项目发展,要吸收其他会员共同作为常务理事。 <br/>
*) 普通参与者:除了会员和常务理事外的其他参与者,皆为普通参与者。 <br/>
<br/>
会员可获得如下收益: <br/>
*) 授权许可费的免除或优惠。 <br/>
*) 深度参与本项目开发过程,缩短自身产品的开发周期。 <br/>
*) 人才培养、社区荣誉。 <br/>
*) 会员间的知识产权共享。 <br/>
*) 本项目的知识产权归全体会员共有,会员根据自身对项目的不同贡献而享有不等比例的产权。 <br/>
<br/>
</p>
<h1><a class="anchor" id="license_sect"></a>
授权许可协议(举报可得重金奖励)</h1>
<p>本协议适用于未被列入《exceptions/black list》的普通参与者,被列入《exceptions/black list》的个人和实体不适用本协议。 <br/>
对于那些不涉及任何商业目的或商业行为的个人学习用途,在没有分发的情况下,使用者遵守 GNU AGPL v3.0 即可。 <br/>
如果涉及任何商业行为或商业目的,那么大家在商言商,采用如下商业许可协议,以保护开源生态中各方的合法权益: <br/>
*) 这是一个开源软件,我们希望它有用,但不提供质量保证(哪怕是隐含的或显而易见的质量保证)。虽然不提供质量保证,但并不意味着你能利用此点去侵害我们的商誉;如果需要质量保证,你可以购买商业版本。作为著作权人(以下简称我们),我们已经尽到了告知义务。一旦发现有人侵犯或者试图侵犯我们商誉,我们必将利用行政和法律手段死磕到底。 <br/>
*) 除了法律允许免费使用的情形,任何用到本软件全部或部分代码的行为,都需要向我们付费购买许可;禁止未经许可将本软件全部或部分翻译成其它编程语言;分发权不能免费获得,禁止在未经许可的情况下以任何形式(包括但不限于源码形式、二进制形式等)私下或公开向别人分发本软件全部或部分代码。 <br/>
*) 除非交易双方在《许可合同》中另有约定,否则的话,对本软件的任何修改、任何基于本软件全部或部分代码的衍生品、任何基于本软件全部或部分代码开发得到的作品、(通过任何形式)引用了本软件全部或部分代码的作品等都需要及时向我们定向开源,并同时向我们授权,允许我们以此相同协议对外公开以上软件代码和/或作品,允许我们自由使用以上软件代码和/或作品,允许我们将其授权给我们的客户进行自由使用。基于我们并不知道是谁在使用本开源软件,为了保护你的权益,你应当及时与我方商谈、签订《许可合同》。及时主动联系我方商谈签订《许可合同》是你的义务。 <br/>
<b>*) 商业许可实行按年对公司(老板)收费。主动联系我们并付费的价格为市场价格。被人举报的被动付费价格为惩罚性价格(市场价格的10倍)。举报情形包括但不限于:违反本授权协议等。</b> <br/>
<b>*) 举报者可获得不低于成交额30%的现金奖励。</b> <br/>
*) 中国的出口法律和法规适用于我们的发行版,并且随着产品和技术再出口到其它地区依旧保持有效。我们保留禁止任一用户使用以上开源软件的权利。 <br/>
*) 解释权归我方所有。因你方违反本协议造成我方损失的,你方负完全责任。 <br/>
<b>只有完全同意以上协议,你才可以使用本软件。 <br/>
如果不同意以上协议,不要使用本软件。</b> <br/>
</p>
<pre></pre><pre></pre> <h1><a class="anchor" id="hello_world_sect"></a>
Hello World示例</h1>
<p>就从一个最简单的hello world示例开始 </p>
<dl class="section see"><dt>参见</dt><dd><a class="el" href="hello__world_8cpp.html" title="作为入门,我们来看一个简单的“对话框”示例。 对话框在英文中往往被叫做Dialog、MessageBox、又或者MsgBox。 示例代码如下: ">hello_world.cpp</a> <pre></pre></dd></dl>
<h1><a class="anchor" id="tese_sect"></a>
特色介绍——支持远程显示</h1>
<pre>利用“Giveda®嵌入式中间件”提供的远程桌面功能,您可以在手机上查看和操作MCU设备的图形界面(远程桌面)。
换句话说,使用“Giveda®嵌入式中间件”的远程桌面功能,您可以将MCU设备的图形界面显示到手机、平板、或PC等任何有屏的设备上。
需要GUI界面、但却没有硬件显示屏的设备,可以使用智能手机作为该设备的显示屏。
利用“Giveda®嵌入式中间件”提供的远程桌面功能,可以实现一个统一的手机APP能够操控不同厂商的不同设备。
</p>
<pre>
</pre> </pre><h1><a class="anchor" id="try_sect"></a>
开发环境搭建</h1>
<pre>首先,你需要从如下网址下载 SDK: <a href="http://mike6924@outlook.com/get-giveda-gui.php">http://mike6924@outlook.com/get-giveda-gui.php</a>
SDK是一个压缩包,比如 Giveda_Remote_GUI_v1.0.tar.gz。
在全英文路径中解压上述压缩包,得到Giveda_Remote_GUI_v1.0目录。请确保Giveda_Remote_GUI_v1.0目录的绝对路径中没有任何中文字符,<br/>
比如/home/lei/下载/Giveda_Remote_GUI_v1.0/这样的带有中文的路径是不允许的,带中文的路径会导致编译出错。<br/>
如果编译出错,请检查编译路径中是不是存在非英文字符。</pre><pre>进入Giveda_Remote_GUI_v1.0/code目录,该目录的结构如下:
|
├── code code里面包含了所有的代码
├── README.txt Read Me 帮助文档
└── remote-client 远程控制客户端</pre><pre>进入Giveda_Remote_GUI_v1.0/code目录,该目录的结构如下:
├
├── doc 开发手册
├── example example
└── pics lib pic dir(给远程控制客户端传入这个路径)</pre><pre>进入Giveda_Remote_GUI_v1.0/code/example目录,该目录的结构如下:
|
├── gCtrlButton 窗体和按钮
├── gCtrlIconView 图标视图、按钮
├── gCtrlItem 文字标签、图片标签、滚动字幕、按钮
├── gCtrlLineEdit 输入框、input box、按钮
├── gCtrlListBox 列表视图、按钮
├── gCtrlMsgBox 对话框、窗体、按钮
├── gCtrlProgressBar 进度条、按钮
├── gCtrlRadioButton 单选按钮
└── hello_world hello_world(最简单的示例程序)</pre><pre>你可以进入以上任一目录然后进行编译。比如你想编译gCtrlButton,就顺序执行如下命令:
cd gCtrlButton
cmake ./ #每次你修改替换了图片后,都需要再次执行cmake
make
./gCtrlButton #执行编译得到的可执行软件</pre><pre>上述程序的输出如下:
#该程序作为远程控制的服务端,已经打开了本机的36000端口,等待远程控制客户端连接
<a class="el" href="namespace_giveda.html">Giveda</a>: listening on tcp/udp port[36000]
#当前还没有远程控制客户端连接
<a class="el" href="namespace_giveda.html">Giveda</a> warning: [paintEvent(), line 167] there is no screen[-1]
#当使用远程控制客户端连接时,需要用到这个设备型号。
device model=[gCtrlButton]</pre><pre>SDK里面有一个使用Qt4编写的远程控制客户端remote-client.qt4,它的用法如下:
usage: ./remote-client.qt4 lib_pic_dir app_pic_dir
其中,lib_pic_dir是固定的,统一为Giveda_Remote_GUI_v1.0/pics;对于不同的app,app_pic_dir是不同的,
app_pic_dir的格式如下:Giveda_Remote_GUI_v1.0/code/example/设备型号/pics/
上述gCtrlButton远程控制服务端所对应的app_pic_dir为Giveda_Remote_GUI_v1.0/code/example/gCtrlButton/pics/</pre><pre>现在,我们来启动远程控制客户端,连接上述gCtrlButton远程控制服务端。执行如下命令:
cd Giveda_Remote_GUI_v1.0/remote-client/
./remote-client.qt4 ../code/pics/ ../code/example/gCtrlButton/pics/</pre><pre>远程控制客户端remote-client.qt4的界面如下:
</p>
<div class="image">
<img src="../remote-client.qt4_screenshot.jpg" alt="远程控制客户端remote-client.qt4的界面"/>
</div>
<p>
输入远程控制服务端的IP地址和端口号,点击连接,即可进行远程控制。</pre><pre>好了,简易的指导就到这里了,现在去开始你自己的尝试吧!
如果出现连接出错提示,请检查IP地址和端口号是否正确。如果界面显示异常,请检查你传递给remote-client.qt4的lib_pic_dir和app_pic_dir</pre><pre>以上SDK中使用到了Qt-4.8.6。向Qt致敬!
以上SDK在ubuntu 14.04 x86_64下测试通过,基于以上SDK开发出来的应用软件具有高度的可移植性。
你尽可在linux下完成产品的开发和调试工作(linux下面做开发还是很方便高效的),深圳技达®保证让你能够一次开发,到处运行。
如果开发遇到问题、或者需要其它软硬件平台的版本,请联系mike6924@outlook.com</pre><pre><pre></pre></pre><pre><pre></pre> </pre><h1><a class="anchor" id="modules_catogery_sect"></a>
功能模块指引</h1>
<pre>Giveda®嵌入式中间件为开发者提供了类似Qt的API,具体的,包括如下功能模块:
</pre><h2><a class="anchor" id="modules_subsect_gui"></a>
窗口及GUI控件</h2>
<pre>Giveda®嵌入式中间件包含了所有常用的GUI控件,并可以快速组装新控件。
</p>
<dl class="section see"><dt>参见</dt><dd><a class="el" href="class_g_ctrl_button.html" title="按钮 ">GCtrlButton</a> <a class="el" href="class_g_ctrl_form.html" title="窗体、窗口、window;GUI软件由若干个窗口组成, GCtrlForm 类代表窗口;窗口可以包含任意数目的控件 GMItem ;如果没有窗口,控件将无法显示。 ...">GCtrlForm</a> <a class="el" href="class_g_ctrl_line_edit.html" title="输入框、input box ">GCtrlLineEdit</a> <a class="el" href="class_g_ctrl_list_box.html" title="GCtrlListBox 类提供了类似windows资源管理器中的列表视图;列表视图可以包含任意数目的列表项 GCtrlListBoxItem ;如果没有列表视图,列表项将无法显示。 ...">GCtrlListBox</a> <a class="el" href="class_g_ctrl_msg_box.html" title="对话框 ">GCtrlMsgBox</a> <a class="el" href="class_g_ctrl_progress_bar.html" title="进度条 GCtrlProgressBar 会主动把自己加入 GCtrlForm 。 如果你需要拼装自定义的UI控件,请使用 GMProgressBar 。 通常情况下,你并不需要拼装自定义的UI控件,所...">GCtrlProgressBar</a> <br/>
<a class="el" href="class_g_ctrl_radio_button_group.html">GCtrlRadioButtonGroup</a> <a class="el" href="class_g_ctrl_image.html" title="图片元素(能够自动缩放到用户所设置的尺寸大小); GCtrlImage 与 GMImage 的区别在于: GCtrlImage 会主动将自己添加到 GCtrlForm 中,而 GMImage 则没有;因...">GCtrlImage</a> <a class="el" href="class_g_ctrl_pixmap.html" title="图片元素(原样显示,不会自动缩放到用户所设置的尺寸大小); GCtrlPixmap 与 GMPixmap 的区别在于: GCtrlPixmap 会主动将自己添加到 GCtrlForm 中,而 GMPix...">GCtrlPixmap</a> <a class="el" href="class_g_ctrl_text.html" title="文字元素; GCtrlText 与 GMText 的区别在于: GCtrlText 会主动将自己添加到 GCtrlForm 中,而 GMText 则没有;因此开发者可以直接在 GCtrlForm 中使用...">GCtrlText</a> <a class="el" href="class_g_ctrl_scroll_text.html" title="滚动字幕; GCtrlScrollText 与 GMScrollText 的区别在于: GCtrlScrollText 会主动将自己添加到 GCtrlForm 中,而 GMScrollText 则没有;...">GCtrlScrollText</a> <a class="el" href="class_g_m_item.html" title="所有界面元素的基类 ">GMItem</a> <a class="el" href="class_g_m_ctrl_item.html" title="可以接收输入事件的界面元素的基类 ">GMCtrlItem</a> <br/>
<a class="el" href="class_g_m_container_item.html" title="所有容器元素的基类;一个容器元素可以包含任意数目的 GMItem 对象 ">GMContainerItem</a> <a class="el" href="class_g_m_pixmap.html" title="图片元素(原样显示,不会自动缩放到用户所设置的尺寸大小); GCtrlPixmap 与 GMPixmap 的区别在于: GCtrlPixmap 会主动将自己添加到 GCtrlForm 中,而 GMPix...">GMPixmap</a> <a class="el" href="class_g_m_image.html" title="图片元素(能够自动缩放到用户所设置的尺寸大小); GCtrlImage 与 GMImage 的区别在于: GCtrlImage 会主动将自己添加到 GCtrlForm 中,而 GMImage 则没有;因...">GMImage</a> <a class="el" href="class_g_m_text.html" title="文字元素; GCtrlText 与 GMText 的区别在于: GCtrlText 会主动将自己添加到 GCtrlForm 中,而 GMText 则没有;因此开发者可以直接在 GCtrlForm 中使用...">GMText</a> <a class="el" href="class_g_m_scroll_text.html" title="滚动字幕; GCtrlScrollText 与 GMScrollText 的区别在于: GCtrlScrollText 会主动将自己添加到 GCtrlForm 中,而 GMScrollText 则没有;...">GMScrollText</a>
<pre></pre></dd></dl>
</pre> <h2><a class="anchor" id="modules_subsect_gdi"></a>
GDI API及字体和图片处理</h2>
<pre>Giveda®嵌入式中间件包含了一个非常优秀的裁剪系统,支持文件级和函数级的裁剪。如果您的MCU硬件配置非常之低,那么,
您可以选择将其它模块裁剪掉,只保留GDI这一块,以适应您的MCU硬件配置。只保留GDI这一块的话,初步预估需要几KB到
几十KB的RAM和ROM,CPU频率几十MHz。
</p>
<dl class="section see"><dt>参见</dt><dd><a class="el" href="class_g_brush.html" title="画刷,用于在绘制时指定填充风格。默认、和最常见的就是实心填充风格 SolidPattern (能够实现实心填充) ">GBrush</a> <a class="el" href="class_g_color.html" title="颜色、像素, GColor 提供了对ARGB8888格式像素的封装 ">GColor</a> <a class="el" href="class_g_font.html" title="字体、字号等信息。 ">GFont</a> <a class="el" href="class_g_font_metrics.html" title="GFontMetrics 使用 GFont 来获取文本的显示宽高 ">GFontMetrics</a> <a class="el" href="class_g_image.html" title="图片 ">GImage</a> <a class="el" href="class_g_paint_device.html" title="可绘制对象的基类 ">GPaintDevice</a> <a class="el" href="class_g_painter.html" title="提供GDI接口、较底层的绘制接口。开发者使用 GPainter::instance() 来获取 GPainter 对象。相关接口可以参考 Qt 文档 ">GPainter</a> <a class="el" href="class_g_point.html" title="GPoint 代表二维平面中的一个点。对二维平面上的一个点进行各种数学运算。 ">GPoint</a> <a class="el" href="class_g_rect.html" title="GRect 代表二维平面中的一个矩形区域。对二维平面上的一个矩形区域进行各种数学运算。 ">GRect</a> <br/>
<a class="el" href="class_g_region.html" title="GRegion 代表二维平面中的一个区域(由若干个矩形区域组成)。对二维平面上的区域进行各种数学运算。 ">GRegion</a> <a class="el" href="class_g_size.html" title="GSize 尺寸大小。对二维平面上的尺寸大小进行各种数学运算。 ">GSize</a>
<pre></pre></dd></dl>
</pre> <h2><a class="anchor" id="modules_subsect_gdiDriver"></a>
显卡和屏幕驱动</h2>
<pre>Giveda®嵌入式中间件可以灵活适配各种显卡和硬件屏幕驱动。
此模块暂无文档。
</pre><h2><a class="anchor" id="modules_subsect_eventLoop"></a>
事件及事件处理系统</h2>
<pre>Giveda®嵌入式中间件包含了一个支持函数级裁剪的事件及事件处理系统
</p>
<dl class="section see"><dt>参见</dt><dd><a class="el" href="class_g_event.html" title="GEvent 是所有事件的基类 ">GEvent</a> GInputHandler <a class="el" href="class_g_u_i_evt_loop.html" title="通常情况下,GUI程序都是由事件驱动的、需要有一个事件循环。 GUIEvtLoop 为GUI程序提供了一个事件循环。 GUIEvtLoop 管理着GUI程序的执行流程、负责GUI程序在总体上、全局上的基...">GUIEvtLoop</a> <a class="el" href="class_g_mouse_event.html" title="GMouseEvent 鼠标事件 ">GMouseEvent</a> <a class="el" href="class_g_key_event.html" title="GKeyEvent 键盘事件 ">GKeyEvent</a> <a class="el" href="class_g_paint_event.html" title="GPaintEvent 绘制事件 ">GPaintEvent</a> <a class="el" href="class_g_tap_event.html" title="GTapEvent 触摸点击事件 ">GTapEvent</a> <br/>
<a class="el" href="class_g_swipe_event.html" title="GSwipeEvent 触摸滑动事件 ">GSwipeEvent</a> <a class="el" href="class_g_gesture_scroll_event.html" title="GGestureScrollEvent 触摸拖动事件 ">GGestureScrollEvent</a>
<pre></pre></dd></dl>
</pre> <h2><a class="anchor" id="modules_subsect_objectSys"></a>
对象管理系统</h2>
<pre>使Giveda®嵌入式中间件区别于其它同类框架的关键一点是,Giveda®嵌入式中间件使用了Giveda®信号槽。
利用“Giveda®信号槽”,开发者在不依赖ANSI c++之外的任何机制和工具的前提下,即可实现对象之间的解耦合。
“Giveda®信号槽”支持ANSI c++并向后兼容(支持ANSI c++及其后续所有c++标准;ANSI c++即ISO c++98)。
可以自豪地讲,“Giveda®信号槽”支持市面上所有的c++编译器。
</p>
<dl class="section see"><dt>参见</dt><dd><a class="el" href="class_g_object.html" title="GObject 几乎是这个世界中所有元素的基类和祖先。 ">GObject</a>
<pre></pre></dd></dl>
</pre> <h2><a class="anchor" id="modules_subsect_tcpIp"></a>
人性化的tcp/udp API</h2>
<pre>Giveda®嵌入式中间件不仅仅是一个图形库,它还为你提供了非常友好易用的、人性化的tcp/udp方面的API接口。
</p>
<dl class="section see"><dt>参见</dt><dd><a class="el" href="class_g_tcp_server.html" title="GTcpServer TCP server端 ">GTcpServer</a> <a class="el" href="class_g_tcp_socket.html" title="GTcpSocket TCP client端 ">GTcpSocket</a> <a class="el" href="class_g_udp_socket.html" title="GUdpSocket UDP socket. ">GUdpSocket</a>
<pre></pre></dd></dl>
</pre> <h2><a class="anchor" id="modules_subsect_bluetooth"></a>
人性化的bluetooth API</h2>
<pre>Giveda®嵌入式中间件不仅仅是一个图形库,它还为你提供了非常友好易用的、人性化的bluetooth方面的API接口。
(此模块文档暂不公开)</pre><pre><pre></pre></pre><pre><pre></pre> </pre><h2><a class="anchor" id="modules_subsect_utils"></a>
其它常用工具类</h2>
<pre>Giveda®嵌入式中间件不仅仅是一个图形库,它还为你提供了非常友好易用的、人性化的工具API接口。
</p>
<dl class="section see"><dt>参见</dt><dd><a class="el" href="class_g_map.html" title="GMap Map数据结构 ">GMap</a> <a class="el" href="class_g_ptr_list.html" title="非常便于使用的指针列表 ">GPtrList</a> <a class="el" href="class_g_reg_exp.html" title="GRegExp 正则表达式运算 ">GRegExp</a> <a class="el" href="class_g_r_w_lock.html" title="GRWLock 线程锁。可用于多线程场景下,对临界资源进行加锁保护 ">GRWLock</a> <a class="el" href="class_g_shared_data.html">GSharedData</a> <a class="el" href="class_g_string.html" title="GString 字符串操作。对字符串进行各种运算处理。 ">GString</a> <a class="el" href="class_g_timer.html" title="GTimer 定时器 ">GTimer</a>
<pre></pre></dd></dl>
</pre> </div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
生成于 2020年 五月 12日 星期二 22:42:21 , 为 Giveda® Embedded Midware使用  <a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。