使mini2440的Qt程序横屏显示,-qt-gfx-transformed与QWS_DISPLAY

mini2440开发板上已经默认安装了QtE-4.6.3库,如果直接使用,则所有的Qt程序都是默认竖屏显示的,如何横屏显示,也即如何旋转屏幕呢?

经过一番折腾,最终找到了方法,现记录下来备忘。

第一步:设置环境变量QWS_DISPLAY

当应用程序./myQtApp -qws启动时,会去检测QWS_DISPLAY这个环境变量,设置一些显示相关的东西。

旋转屏幕就在这里设置,方法是:

export QWS_DISPLAY=Transformed:Rot90

其中Rot90可以替换为Rot180、Rot270、Rot0等,也可以直接写成90、180、270、0。

实际上,运行mini2440自带的官方Qt例程的时候,此环境变量是已经被配置的,直接在开发板中vi /bin/qt4,在第10行可发现:export QWS_DISPLAY=:1

博主根据这个qt4脚本,新建了一个名为qtenv的脚本,使得以后运行Qt程序的时候可以直接使用./qtenv myQtApp的方式,减少每次运行都要配置环境变量的麻烦。这个脚本的内容可参考博主的另一篇文章《交叉编译qwt控件并在Mini2440开发板上运行(Ubuntu12.04 + QtE4.6.3 + qwt6.1.2)》的4.2节:配置Qt程序的运行环境并运行程序

将qtenv脚本中的:1直接改为Transformed:Rot90即可。目前博主还没搞懂这个:1是什么意思,待以后慢慢研究。

配置完成后,随便运行一个Qt程序./qtenv testQt,发现提示错误: Transformed: driver not found。这是因为交叉编译Qt的时候,没有将支持屏幕旋转的驱动编译进来。

第二步:重新交叉编译QtE-4.6.3,加上支持屏幕旋转的-qt-gfx-transformed选项

打开mini2440官方提供的QtE-4.6.3源文件qt-everywhere-opensource-src-4.6.3中的build-all脚本,发现果然没有支持屏幕旋转,在第8行最后增加选项-qt-gfx-transformed,保存,重新交叉编译即可。

-------------------------------------------------------------------------------------------------------

为了搞清楚-qt-gfx-transformed是什么意思,打开configure文件,在第687行发现以下参数:

CFG_GFX_AVAILABLE="linuxfb transformed qvfb vnc multiscreen directfb"

同时在3873行有以下说明:

-qt-gfx-<driver> ... Enable a graphics <driver> in the QtGui library.
                              Possible values for <driver>: [ $CFG_GFX_AVAILABLE ]

可见transformed是GtGui库中的一个图形的驱动,另外还有linuxfb、qvfb、vnc、multiscreen、directfb等参数可供选择,具体含义博主也尚不清楚,待以后研究。

参考资料

环境变量QWS_DISPLAY

Qt4.7.0 使用电容屏

linux嵌入式qt的屏幕旋转与字体大小问题

你可能感兴趣的:(qt,mini2440,屏幕旋转,QWS_DISPLAY)