各种Qt平台插件有什么用?

Mik*_*ike 18 linux plugins qt cross-platform qt5

我正在为基于ARM的目标(TI AM335x EVM)进行Qt5.2应用程序的交叉编译,但它无法在我的平台上显示任何内容.做了一些google'ing之后,我发现如果我用以下方式启动它:

 ./helloworld -platform eglfs
Run Code Online (Sandbox Code Playgroud)

它会出现(全屏,但它工作)!

我开始查看所有平台选项,我发现:

android,eglfs,linuxfb,minimalegl,windows,xcb,cocoa,ios,offscreen,qnx,directfp,kms,minimal,openwfd

我想知道他们是为了什么.我假设,例如,如果我想在Android设备上运行我的应用程序,我必须通过-platform android,但它们对我来说并不是很明显.

是否应该使用每个参数的列表?

例如,什么eglfs代表什么?为什么我需要使用那些linuxfb不起作用的地方?
(我原本以为linux帧缓冲区是我想要启动我的应用程序,因为它在嵌入式linux上运行)

Rei*_*ica 24

如果linuxfb插件不起作用,那么您可能没有在系统上正确配置帧缓冲设备.也许一个directf层已经在运行,所以你可能想尝试一下directfb插件.

如果您希望避免在运行可执行文件时指定platform选项,则可以configure在构建Qt时将默认选项传递给它.

插件可以描述如下:

  • Linux插件 - 那些使用特定于Linux的输入设备和各种输出设备

    • eglfs - 在全屏模式下使用OpenGL ES.由于OpenGL没有窗口管理器的概念,所以别无他法.

    • directfb(not directfp) - 通过directfb层使用带有OpenGL ES的linux帧缓冲区.集成到directfb窗口中.

    • linuxfb - 在全屏模式下使用linux帧缓冲区.由于linuxfb没有窗口管理器的概念,所以别无选择.

    • kms - 在全屏模式下使用linux内核模式设置API.由于DRM没有窗口管理器的概念,因此没有其他办法.

    • openwfd - 在全屏模式下使用openwfd Wifi显示.没有其他办法,因为openwfd没有窗口管理器的概念.

  • 独立于平台的插件 - 可以在任何操作系统上运行

    • xcb - 在X11服务器上运行,并集成到X11窗口环境中.通常,如果没有窗口管理器运行,它也不会正常运行.如果您想要将应用程序从Windows服务器提供给X11瘦终端(通常是Unix机箱),可以在Windows上实现xlib的Windows实现.

    • offscreen - 渲染到屏幕外缓冲区.用于渲染自定义显示.

    • minimal - 一个简约的后备存储,可选择将虚拟屏幕转储到文件中.实现最低限度的功能只是为了演示如何开始编写平台插件.

  • 其他特定于平台的插件

    • android - 使用Android API并集成到Android环境中.

    • windows - 使用WINAPI并集成到Windows窗口环境中.

    • cocoa - 使用Cocoa API并集成到OS X窗口环境中.

    • iOS - 使用iOS工具包并集成到iOS环境中.

    • qnx - 使用QNX API并集成到QNX光子窗口环境中.