Es posible usar QWidget (Qt5.2) en una BeagleBoard xM?

159 views
Skip to first unread message

gatom...@gmail.com

unread,
Nov 25, 2013, 6:02:45 AM11/25/13
to embeb...@googlegroups.com
Hola a todos.

He intentado programar una aplicación de QT 5.2 en una Beagleboard-xM sin utilizar ni entorno de ventanas ni las X. La solución a la que he llegado es utilizar el plugin gráfico EglFS, he desarrollado alguna aplicación sencilla utilizando QtQuick 2.0 pero no he conseguido utilizar un QWidget sobre este plugin ya que recibo los errores:

This plugin does not support propagateSizeHints()
This plugin does not support setParent!
EGLFS: OpenGL windows cannot be mixed with others.

 ¿Es posible de alguna forma utilizar QWidgets sobre EglFS?

Otra posible solución podría ser utilizar Wayland pero no he encontrado ninguna guía para hacer funcionar Wayland en la Beagleboard-xM ¿Sería posible compilar Wayland para la Beagleboard-xM y una vez conseguido utilizar sobre ella los QWidget?

¿Y alguna otra forma de utilizar QWidgets en un sistema embebido (BeagleBoard xM) sin usar entorno de ventanas ni las X?

Gracias.

Roberto.

martin ribelotta

unread,
Nov 25, 2013, 8:49:01 AM11/25/13
to embeb...@googlegroups.com
El día 25 de noviembre de 2013 08:02, <gatom...@gmail.com> escribió:
> Hola a todos.
>
> He intentado programar una aplicación de QT 5.2 en una Beagleboard-xM sin
> utilizar ni entorno de ventanas ni las X. La solución a la que he llegado es
> utilizar el plugin gráfico EglFS, he desarrollado alguna aplicación sencilla
> utilizando QtQuick 2.0 pero no he conseguido utilizar un QWidget sobre este
> plugin ya que recibo los errores:
>
> This plugin does not support propagateSizeHints()
> This plugin does not support setParent!
> EGLFS: OpenGL windows cannot be mixed with others.
>
> ¿Es posible de alguna forma utilizar QWidgets sobre EglFS?
>
De hecho, estas usando UN widget para mostrar las cosas de openGLES y
demás. Pero según veo, hay que darle soporte explicito para esto en el
plugin.

La solución que da Qt en su código (ficking documentación!!!) es esta:
https://github.com/meta-qt5/qtbase/blob/7d2dcf58e04518c6b234ad9600c8851721d57c70/src/gui/kernel/qplatformwindow.cpp#L236

Copio y pego por si el link esta roto o algo:

/*!
This function is called to enable native child window in QPA. It
is common not to support this
feature in Window systems, but can be faked. When this function is
called all geometry of this
platform window will be relative to the parent.
*/
//jl: It would be useful to have a property on the platform window
which indicated if the sub-class
// supported the setParent. If not, then geometry would be in screen
coordinates.
void QPlatformWindow::setParent(const QPlatformWindow *parent)
{
Q_UNUSED(parent);
qWarning("This plugin does not support setParent!");
}

Usando QWidgets sin parent y poniéndole coordenadas absolutas debería
andarte... Por supuesto, el orden de creación qui si importa (Widgets
mas viejos abajo, widgets mas nuevos arriba) y ya que tampoco esta
soportado lower y raise no hay problema de que joda el stacking de
presentación.

Mi recomendación seria, ya que estas usando QtQuick, usar QtDesktopComponents:
http://qt-project.org/wiki/QtDesktopComponents

Que es lo que reemplazaría definitivamente a QtWidgets (Qt6? Qt7?)

> Otra posible solución podría ser utilizar Wayland pero no he encontrado
> ninguna guía para hacer funcionar Wayland en la Beagleboard-xM ¿Sería
> posible compilar Wayland para la Beagleboard-xM y una vez conseguido
> utilizar sobre ella los QWidget?
>
Depende del stack gráfico... según veo, hay soporte de OpenGL-ES y EGL
directamente sin X11.

Compilar solo Wayland es muuuuy fácil (ok, comparado con todo lo
otro), porque son solo librerías de un protocolo medio rarucho. Lo
que, seguramente NO compilará es Weston pero no drama, se usa el
compositor de QtWayland (QmlCompositor preferiblemente) y a la
bosta...

De hecho, por lo que contas, QtWayland debería compilar perfectamente
en tu plataforma (compilando solo la parte de las librerías Wayland y
libxkbcommon sin mesa/opengl ya que eso parece proporcionártelo el
resto del entorno que desconozco como está armado)

Definitivamente, si tenes EGL andando deberías probar compilar
QtWayland. La gente de Freescale tiene unas librerias graficas EGL
compatibles con Watland (Weston incluido) pero es un parto compilarlo.
Ahora, QtWayland es un bicho bastante en ese sentido ;-)

> ¿Y alguna otra forma de utilizar QWidgets en un sistema embebido
> (BeagleBoard xM) sin usar entorno de ventanas ni las X?
>
Puessss...

After this point, this is no man's land

Good Luck

> Gracias.
>
> Roberto.
>
> --
> -- Recibiste este mensaje porque estás suscripto al Grupo Google
> Embebidos32. Para postear en este grupo, escribe un email a
> embeb...@googlegroups.com. Para des-suscribirte, envía un email a
> embebidos32...@googlegroups.com. Para más opciones, visita el sitio
> del grupo en https://groups.google.com/d/forum/embebidos32?hl=es
> ---
> Has recibido este mensaje porque estás suscrito al grupo "Embebidos32" de
> Grupos de Google.
> Para anular la suscripción a este grupo y dejar de recibir sus correos
> electrónicos, envía un correo electrónico a
> embebidos32...@googlegroups.com.
> Para obtener más opciones, visita https://groups.google.com/groups/opt_out.
Reply all
Reply to author
Forward
0 new messages