各种QT平台插件的用途是什么?



i正在对基于ARM的目标(Ti AM335X EVM)进行QT5.2应用程序进行一些交叉编译,并且无法在我的平台上显示任何内容。做了一些Google之后,我发现如果我启动了它:

 ./helloworld -platform eglfs

它将显示(全屏,但有效)!

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

android,eglfs,linuxfb,minimalegl,windows,xcb,可可,iOS,iOS,offscreen,qnx,directfp,kmms,kmms,simimal,openwfd

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

应使用这些参数中的每个参数时,是否有清单?

例如,eglfs代表什么?为什么我需要在linuxfb不起作用的情况下使用它?
(我以为Linux框架缓冲区是我要启动应用程序的方式,因为它在嵌入式Linux上运行)

如果linuxfb插件不起作用,那么您可能没有正确配置系统上的Framebuffer设备。也许DirectF层已经在运行,因此您可能需要尝试directfb插件。

如果您希望在运行可执行文件时必须指定平台选项,则可以在构建QT时将默认值传递给configure

插件可以描述如下:

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

  • eglfs-在全屏模式下使用OpenGL ES。由于OpenGL没有窗口管理器的概念,因此没有其他方法。

  • directFB(不是DirectFP) - 通过DirectFB层使用带有OpenGL ES的Linux框架缓冲区(另请参见Wikipedia)。集成到DirectFB窗口中。

  • LinuxFB-在全屏模式下使用Linux框架缓冲区。没有其他方法,因为LinuxFB没有窗口管理器的概念。

  • kms-在全屏模式下使用Linux内核模式API。由于DRM没有窗口管理器的概念,没有其他方法。

  • OpenWFD-在全屏模式下使用OpenWFD WiFi显示。没有其他方法,因为OpenWFD没有窗口管理器的概念。

  • 无独立的插件 - 可以在任何OS

    上运行
  • XCB-在X11服务器上运行,并集成到X11窗口环境中。通常,如果没有窗口管理器也运行,它的行为将无法正确。可以在给定Xlib的Windows实现的Windows上工作,如果您想将Windows Server的应用程序提供给X11薄终端(通常是UNIX框)。

  • 屏幕外 - 呈现到屏幕上的缓冲区。对于渲染自定义显示很有用。

  • 最小值 - 一种简约的备用存储存储,可选将虚拟屏幕转储到文件。仅仅说明如何开始编写平台插件。

  • 其他平台特定插件

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

  • Windows-使用Winapi并集成到Windows窗口环境中。

  • 可可 - 使用可可API并集成到OS X窗口环境中。

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

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

我刚刚在Ti论坛中回答了同一查询。如果eGLFS功能性,而LinuxFB则不是,请用qt-project.org在JIRA中提交一个错误,因为AM335X中的EGLFS和LinuxFB都使用Linux Framebuffer。EGLFS(与小部件应用程序一起使用时)使用带有全屏显示的Dirty Rectangle方法。如果可能的话,也可以在QT5上移至QML。

ps:您可以在目标上导出QT_QPA_PLATFORM=eglfs(或linuxfb),以避免每次调用应用程序时设置平台。(http://doc.qt.io/qt-5/embedded-linux.html)

可能是QT的Wayland平台,这可能是最值得注意的补充,显然是自QT 5.11(在官方二进制文件中)以来。默认情况下,Fedora 31 ...现在启用了,对于某些应用程序来说可能会有些麻烦。红帽必须实现后备名单。

相关内容

  • 没有找到相关文章

最新更新