Giveda® Embedded Midware  1.2.0
本文档受《版权法》、《版权公约》保护。深圳技达®版权所有
 全部  命名空间 文件 函数 变量 类型定义 枚举 枚举值 友元 宏定义 
Public 成员函数 | 静态 Public 成员函数 | Public 属性 | 所有成员列表
GUIEvtLoop类 参考

通常情况下,GUI程序都是由事件驱动的、需要有一个事件循环。 GUIEvtLoop 为GUI程序提供了一个事件循环。
GUIEvtLoop 管理着GUI程序的执行流程、负责GUI程序在总体上、全局上的基本设置。一个GUI程序应当有且仅有一个 GUIEvtLoop 对象。
在你软件代码的任何地方,你可以使用 uiEvtLp 这个全局变量来访问 GUIEvtLoop 对象。 作为一个最佳实践,用户可以创建一个 GUIEvtLoop 的子类(比如命名为GUIApplication),然后把所有事关软件总体、和全局的初始化等操作放在这个GUIApplication子类中。
更多...

#include <gUIEvtLoop.h>

继承自 GObject .

Public 成员函数

 GUIEvtLoop (int argc, char **argv)
 使用argv和argc作为命令行参数,构造一个GUI事件循环对象。举例如下:
更多...
 
virtual ~GUIEvtLoop ()
 析构GUIEvtLoop,并设置全局变量uiEvtLp为0 更多...
 
int exec ()
 进入事件循环,开始处理事件。除非 quit() 被调用,否则exec()将一直阻塞。如果你想退出exec(),请调用 quit()
事件循环从窗口系统中接收事件并且把它们分派给应用程序的窗口部件。
通常来说,在调用exec()之前,不会发生任何的用户交互。但 GCtrlMsgBox 这样的模式对话框是个例外,因为模式对话框拥有自己独立的 GCtrlMsgBox::exec()更多...
 
int32_t loopLevel () const
 返回当前的事件循环级别。不要调用它,除非你是专家。 更多...
 
virtual void keyPressEvent (GKeyEvent *)
 
int8_t screenCounts () const
 返回目前的屏幕总数量,包括所有虚拟远程屏幕和真实硬件屏幕。 更多...
 
void setSize (T_OFFSET w, T_OFFSET h)
 设置GUI窗口系统的宽高,以像素为单位。建议用户将GUI窗口系统的宽高设置为自己屏幕的分辨率。 更多...
 
GUIEvtLoopPriv * uiEvtLpPriv ()
 
const GStringdeviceModel () const
 返回设备型号;详见 GUIEvtLoop( int argc, char** argv) ; 更多...
 
const GStringdeviceTittle () const
 返回设备的显示名称;详见 GUIEvtLoop( int argc, char** argv) ; 更多...
 
const char * name () const
 获取对象名称 更多...
 
GObjectparent () const
 获取对象的parent 更多...
 
virtual bool event (GEvent *)
 开发者可以在子类中覆盖此函数,处理自己需要的事件 更多...
 

静态 Public 成员函数

static int enterLoop ()
 对事件循环进行递归。不要调用它,除非你是专家。 更多...
 
static int exitLoop (int level, int code=0)
 退出事件循环。不要调用它,除非你是专家。 更多...
 
static int quit (int code=0)
 让程序退出; 更多...
 
static int postEvent (GEvent *event, int priority=SYS_EVT_PRIORITY, GObject *receiver=NULL)
 将一个事件加入事件循环。如果你不需要指定接收者和优先级,那么你调用这个函数会比较方便。 更多...
 
static int postEvent (GEvent *event, GObject *receiver, int priority=SYS_EVT_PRIORITY)
 将一个事件加入事件循环。如果你不需要指定优先级,那么你调用这个函数会比较方便。 更多...
 
static void setImageDB (const GImageAttr *p, const uint16_t nums)
 该函数用于设置软件所需要的图片数据;用户必须在构造GUIEvtLoop对象之前调用setImageDB。举例如下:
更多...
 
template<class Receiver , typename... Args>
static int connect (GObject *sender, GSignal< void(Args...)> &signal, Receiver *receiver, void(Receiver::*SlotFunc)(Args...))
 将信号和槽建立连接。
Receiver代表接收者的类型 Args是槽函数/信号的参数列表。 更多...
 
template<class Receiver , typename... Args>
static int disconnect (GObject *sender, GSignal< void(Args...)> &signal, Receiver *receiver, void(Receiver::*SlotFunc)(Args...))
 将信号和槽断开连接。
Receiver代表接收者的类型 Args是槽函数/信号的参数列表。 更多...
 
static bool isObjectExist (GObject *obj)
 判断对象是否已经被析构掉了。 更多...
 

Public 属性

GSignal< void(void)> sigDestroyed
 当对象被析构时,会发射此信号 更多...
 

详细描述

通常情况下,GUI程序都是由事件驱动的、需要有一个事件循环。 GUIEvtLoop 为GUI程序提供了一个事件循环。
GUIEvtLoop 管理着GUI程序的执行流程、负责GUI程序在总体上、全局上的基本设置。一个GUI程序应当有且仅有一个 GUIEvtLoop 对象。
在你软件代码的任何地方,你可以使用 uiEvtLp 这个全局变量来访问 GUIEvtLoop 对象。 作为一个最佳实践,用户可以创建一个 GUIEvtLoop 的子类(比如命名为GUIApplication),然后把所有事关软件总体、和全局的初始化等操作放在这个GUIApplication子类中。

作者
明心
版本
1.0.0
日期
2019-2-4

构造及析构函数说明

GUIEvtLoop::GUIEvtLoop ( int  argc,
char **  argv 
)

使用argv和argc作为命令行参数,构造一个GUI事件循环对象。举例如下:

char* param[] = {
    NULL, //这个位置放置的是程序的文件名,直接置为NULL也是可以的
    (char*)"gCtrlMsgBox", //这个位置放置的是(运行本软件的)设备型号,本软件将根据这个设备型号去寻找相关资源比如图片等
    (char*)"Hello Giveda",//这个位置放置的是设备的显示名称,
    (char*)"36000",//这个位置放置的是设备端(即server端)所打开的TCP和UDP端口号,远程显示客户端会去连接TCP和UDP的这个端口号;UDP用于实现设备的搜索发现、TCP用于提供实际的远程显示服务;用户应当确保在此传入的端口号没有被其它软件占用。
};
argc = sizeof(param)/sizeof(char*);
GUIEvtLoop a( argc, param );//定义UI的事件循环
参数
argc参数的数目
argv参数列表
virtual GUIEvtLoop::~GUIEvtLoop ( )
virtual

析构GUIEvtLoop,并设置全局变量uiEvtLp为0

成员函数说明

template<class Receiver , typename... Args>
int GObject::connect ( GObject sender,
GSignal< void(Args...)> &  signal,
Receiver *  receiver,
void(Receiver::*)(Args...)  SlotFunc 
)
staticinherited

将信号和槽建立连接。
Receiver代表接收者的类型 Args是槽函数/信号的参数列表。

参数
sender指向发射者的指针
signal指向信号的引用。
receiver指向接收者的指针
SlotFunc指向槽函数的指针
返回
0代表成功;非0代表失败
const GString& GUIEvtLoop::deviceModel ( ) const

返回设备型号;详见 GUIEvtLoop( int argc, char** argv) ;

返回
const GString&
const GString& GUIEvtLoop::deviceTittle ( ) const

返回设备的显示名称;详见 GUIEvtLoop( int argc, char** argv) ;

返回
const GString&
template<class Receiver , typename... Args>
int GObject::disconnect ( GObject sender,
GSignal< void(Args...)> &  signal,
Receiver *  receiver,
void(Receiver::*)(Args...)  SlotFunc 
)
staticinherited

将信号和槽断开连接。
Receiver代表接收者的类型 Args是槽函数/信号的参数列表。

参数
sender指向发射者的指针
signal指向信号的引用。
receiver指向接收者的指针
SlotFunc指向槽函数的指针
返回
0代表成功;非0代表失败
static int GUIEvtLoop::enterLoop ( )
static

对事件循环进行递归。不要调用它,除非你是专家。

返回
int 0代表成功,非0代表失败
virtual bool GObject::event ( GEvent )
virtualinherited

开发者可以在子类中覆盖此函数,处理自己需要的事件

参数
...
返回
bool

GTcpSocket, GTimer, GUdpSocket , 以及 GTcpServer 重载.

int GUIEvtLoop::exec ( )

进入事件循环,开始处理事件。除非 quit() 被调用,否则exec()将一直阻塞。如果你想退出exec(),请调用 quit()
事件循环从窗口系统中接收事件并且把它们分派给应用程序的窗口部件。
通常来说,在调用exec()之前,不会发生任何的用户交互。但 GCtrlMsgBox 这样的模式对话框是个例外,因为模式对话框拥有自己独立的 GCtrlMsgBox::exec()

返回
int 此处返回的是你调用 quit() 时所传入的code参数;
static int GUIEvtLoop::exitLoop ( int  level,
int  code = 0 
)
static

退出事件循环。不要调用它,除非你是专家。

参数
level指定事件循环的级别
code事件循环的退出码
返回
int 0代表成功,非0代表失败
static bool GObject::isObjectExist ( GObject obj)
staticinherited

判断对象是否已经被析构掉了。

参数
obj...
返回
bool true表示对象健在,false表示对象已经被析构掉了
virtual void GUIEvtLoop::keyPressEvent ( GKeyEvent )
virtual
int32_t GUIEvtLoop::loopLevel ( ) const

返回当前的事件循环级别。不要调用它,除非你是专家。

返回
int
const char* GObject::name ( ) const
inherited

获取对象名称

返回
const char*
GObject* GObject::parent ( ) const
inherited

获取对象的parent

返回
GObject*
static int GUIEvtLoop::postEvent ( GEvent event,
int  priority = SYS_EVT_PRIORITY,
GObject receiver = NULL 
)
static

将一个事件加入事件循环。如果你不需要指定接收者和优先级,那么你调用这个函数会比较方便。

参数
event事件
receiver如果为空则代表事件由系统处理,如果不为空,则事件会直接分发给接收者进行处理。
priority事件处理的优先级;值越高说明事件越紧急、需要优先处理。
返回
int 0代表成功,非0代表失败
static int GUIEvtLoop::postEvent ( GEvent event,
GObject receiver,
int  priority = SYS_EVT_PRIORITY 
)
static

将一个事件加入事件循环。如果你不需要指定优先级,那么你调用这个函数会比较方便。

参数
event事件
receiver如果为空则代表事件由系统处理,如果不为空,则事件会直接分发给接收者进行处理。
priority事件处理的优先级;值越高说明事件越紧急、需要优先处理。
返回
int 0代表成功,非0代表失败
static int GUIEvtLoop::quit ( int  code = 0)
static

让程序退出;

参数
code指定程序的退出code,这个code将作为 exec() 的返回值
返回
int 0代表成功,非0代表失败
int8_t GUIEvtLoop::screenCounts ( ) const

返回目前的屏幕总数量,包括所有虚拟远程屏幕和真实硬件屏幕。

返回
int8_t
static void GUIEvtLoop::setImageDB ( const GImageAttr p,
const uint16_t  nums 
)
static

该函数用于设置软件所需要的图片数据;用户必须在构造GUIEvtLoop对象之前调用setImageDB。举例如下:

#include <gUIEvtLoop.h>
#include "gImgApp.h" //这个头文件由Giveda框架自动生成,用户在需要使用时include进来即可
int main( int argc, char** argv )
{
    //在定义GUIEvtLoop对象之前,先执行setImageDB;
    //其中用到的imageDB(), GIMG_APP_NUM_MAX均在gImgApp.h中定义
    GUIEvtLoop::setImageDB( imageDB(), GIMG_APP_NUM_MAX);
    GUIEvtLoop a( argc, param );//定义UI的事件循环
    //用户在此进行自己需要的其它操作
    //进入事件循环
    return a.exec();
}
参数
p直接传递imageDB()即可
nums直接传递GIMG_APP_NUM_MAX即可
返回
void
void GUIEvtLoop::setSize ( T_OFFSET  w,
T_OFFSET  h 
)

设置GUI窗口系统的宽高,以像素为单位。建议用户将GUI窗口系统的宽高设置为自己屏幕的分辨率。

参数
w
h
返回
void
GUIEvtLoopPriv* GUIEvtLoop::uiEvtLpPriv ( )

类成员变量说明

GSignal<void(void)> GObject::sigDestroyed
inherited

当对象被析构时,会发射此信号


该类的文档由以下文件生成: