一、QWSServer简介
QWSServer类在Qt中为嵌入式Linux封装了一个服务进程,继承自QObject类。
二、QWSServer文件包含
#include < QWSServer >
三、普通公有函数
函数 | 函数说明 |
---|---|
const QBrush & backgroundBrush () const | 如果没有模糊窗口,返回用于背景的画笔 |
const QList<QWSWindow *> & clientWindows () | 返回当前顶层窗口的列表 |
void closeKeyboard () | 关闭键盘设备 |
void closeMouse () | 关闭鼠标设备 |
void enablePainting ( bool enable ) | 使能在屏幕上绘画 |
void openKeyboard () | 打开键盘设备 |
void openMouse () | 打开鼠标设备 |
void refresh () | 刷新显示 |
void refresh ( QRegion & region ) | 刷新显示 |
void resumeMouse () | 恢复鼠标 |
void sendIMEvent ( const QInputMethodEvent * event ) | 发送输入法时间 |
void sendIMQuery ( int property ) | 发送输入法查询 |
void suspendMouse () | 延迟鼠标 |
QWSWindow * windowAt ( const QPoint & position ) | 返回给定位置的窗口 |
还有29个继承自QObject的公有函数。
四、静态公有函数
函数 | 函数说明 |
---|---|
void addKeyboardFilter ( KeyboardFilter * filter ) | 添加键盘过滤器 |
QWSServer * instance () | 返回一个指向服务端实例的指针 |
bool isCursorVisible () | 判断光标是否可见 |
QWSKeyboardHandler * keyboardHandler () | 返回主要的键盘驱动 |
QWSMouseHandler * mouseHandler () | 返回主要的鼠标驱动 |
const QList<QWSMouseHandler *> & mouseHandlers () | 返回所有的鼠标驱动的列表 |
void processKeyEvent ( int unicode, int keycode, Qt::KeyboardModifiers modifiers, bool isPress, bool autoRepeat ) | 处理给定的键事件 |
void removeKeyboardFilter () | 移除键盘设备的过滤器 |
void screenSaverActivate ( bool activate ) | 激活屏保 |
bool screenSaverActive () | 判断屏保是否激活 |
void sendKeyEvent ( int unicode, int keycode, Qt::KeyboardModifiers modifiers, bool isPress, bool autoRepeat ) | 发送键事件 |
void setBackground ( const QBrush & brush ) | 设置背景 |
void setCurrentInputMethod ( QWSInputMethod * method ) | 设置当前输入法 |
void setCursorVisible ( bool visible ) | 设置光标可见性 |
void setDefaultKeyboard ( const char * keyboardDriver ) | 设置默认键盘 |
void setDefaultMouse ( const char * mouseDriver ) | 设置默认鼠标 |
void setKeyboardHandler ( QWSKeyboardHandler * driver ) | 设置键盘驱动 |
void setMaxWindowRect ( const QRect & rectangle ) | 设置窗口最大区域 |
void setMouseHandler ( QWSMouseHandler * driver ) | 设置鼠标驱动 |
void setScreenSaver ( QWSScreenSaver * screenSaver ) | 设置屏保 |
void setScreenSaverBlockLevel ( int eventBlockLevel ) | 设置屏保块等级 |
void setScreenSaverInterval ( int milliseconds ) | 设置屏保间隔时间 |
void setScreenSaverIntervals ( int * intervals ) | 设置屏保间隔时间 |
还有7个继承自QObject的公有的静态成员函数。
五、QWSServer的详细描述
QWSServer类在Qt中为嵌入式Linux封装了一个服务进程。
当你运行Linux嵌入式Qt程序时,它要么作为服务器运行,要么连接到已经存在的服务器。服务器和客户机进程有不同的职责:客户机进程执行所有应用程序特定的操作。服务器进程负责管理客户端以及鼠标、键盘和屏幕输出。另外,服务器提供了处理输入法的函数。
在用于嵌入式Linux的Qt程序中,所有系统生成的事件都被传递给服务器应用程序,服务器应用程序然后将事件传播到适当的下位机。
注意:不需要自己构造QWSServer类,只需使用instance()函数。
六、客户端管理
当应用程序添加和移除窗口时,服务器程序维护每个窗口的信息。在用于嵌入式Linux的Qt程序中,顶层窗口被封装为一个QWSWindow对象。每个窗口都可以通过QWSWindow::client()函数来判断哪个客户端拥有它。使用clientWindows()函数检索当前顶层窗口的列表。
七、鼠标处理
当服务器应用使用Qt插件系统开始运行时,鼠标驱动被加载。鼠标驱动接收来自设备的鼠标事件,然后将每一个事件封装在QWSEvent类的实例中,然后将其传递给服务器。
八、键盘处理
当服务器应用使用Qt插件系统开始运行时,键盘驱动被加载。键盘驱动接收来自设备的键盘事件,然后将每一个事件封装在QWSEvent类的实例中,然后将其传递给服务器。
九、显示处理
当需要更新屏幕时,服务器将运行与将要更新的区域相交的所有顶层窗口,确保已关联的客户端已经更新了他们的内存缓冲区。服务器使用屏幕驱动将内存的内容复制到屏幕上。
十、输入法处理
不论服务器什么时候接收事件,它都会查询顶层窗口的堆来找到包含事件位置的窗口,然后服务器转发事件到适当的客户端。如果安装了输入法,它将作为在服务器和客户端程序之间的过滤器。