https://github.com/zytc2009/BigTeam_learning
分类: C/C++
2009-08-03 09:20:30
Qt的显示管理,Qt嵌入式客户端默认的行为是将其器件写入内存, 而服务器负责把内存的内容存储到屏幕上。服务器使用屏幕驱动器将内存的内容复制到屏幕显示。
当服务端应用程序开始启动时,使用Qt的插件系统,屏幕驱动被加载
内容:
嵌入式LinuxQt为Linux framebuffer提供的驱动, 有virtual framebuffer, transformed screens, VNC servers和 multi screens. 运行configure脚本可以列出可用的驱动:
./configure -help
在Qt的默认配置文件中,只有一个未加速的Linux framebuffer driver (/dev/fb0) 是可用的.通过使用configure脚本可以让各种驱动可用或禁用. 例如:
./configure -qt-gfx-transformed
通常的屏幕驱动能通过QScreen的子类和创建的屏幕驱动插件(从QScreenDriverPlugin类继承)被执行. QScreenDriverFactory类默认执行将自动检测插件,在运行期加载驱动到服务端应用程序.
通过设置QWS_DISPLAY环境变量去指定使用哪个驱动,例如 (假设当前的shell是bash,ksh,zsh或者sh):
export QWS_DISPLAY="[: ]... [: ]"
驱动详细选项 | 可用的 | 描述 |
---|---|---|
tty= |
LinuxFb | 程序运行时传送至控制台的设备文件. |
nographicsmodeswitch | LinuxFb | 确定应用程序没有在图形模式下. |
littleendian | LinuxFb | 在大端系统下告诉驱动必须处理小端的frame buffer. |
mmWidth= |
LinuxFb, QVFb | 屏幕的物理宽度 (通常是按分辨率计算). |
mmHeight= |
LinuxFb, QVFb | 屏幕的物理宽度 (通常是按分辨率计算). |
LinuxFb | ||
VNC, Transformed, Multi | 指定一个子驱动. | |
Transformed | 指定屏幕的旋转. x的有效值为90, 180和270. | |
offset= |
Multi | 指定子窗口左上角的坐标系(默认0,0). |
当运行应用程式时,也可以通过 -display选项设置QWS_DISPLAY环境变量.例如:
myApplication -display "[: ]... [: ]"
VNC, Transformed和Multi screen drivers都依赖子驱动. 指定一个驱动的一般方法如下::
export QWS_DISPLAY="[: ][: ]... [ : ]"
就子驱动而言, 在每个子驱动和显示的数目去区分多个驱动和显示器是很重要的. 多屏幕驱动可以有多个子驱动,例如:
export QWS_DISPLAY="Multi: QVFb:0 QVFb:offset=640,0:1 :2"
如果子驱动没有被指定,VNC screen驱动被默认为一个虚拟屏驱动.在这种情况下VNC驱动允许指定一些额外的参数(可选的),默认虚拟屏的尺寸和深度:
运行一个尺寸为720x480像素32位的VNC虚拟屏的例子如下:
export QWS_DISPLAY="VNC:size=720x480:depth=32"
在Linux framebuffer上运行VNC屏驱动的例子:
export QWS_DISPLAY="VNC:LinuxFb"
在这最后一个例子, Qt同时使用两个显示驱动, 设备屏幕和通过网络的VNC客户端的显示的显示输出.
Copyright © 2008 Nokia | Trademarks | 译者:lry |
2008-11-27 |
Qt 4.4.3 |