[Solved] How to redirect the QT Application display to /dev/fb0
-
wrote on 3 Jun 2014, 09:06 last edited by
Dear All,
I have a very simple QT GUI application like shown below:
#include <QApplication>
#include <QtWidgets/QLabel>
int main(int argc, char** argv)
{QApplication app(argc, argv); QLabel *label = new QLabel("Hello World!"); label->show(); return app.exec();
}
Now when i run the above command like this:
./myApp -qws -display "linuxfb:/dev/fb0"I get following error:
This application failed to start because it could not find or load the Qt platform plugin "xcb".
Available platform plugins are: linuxfb (from :/home/GUI).
Reinstalling the application may fix this problem.
Aborted (core dumped)Kindly help me out. I compiled QT from source code and there was no XCB support. Only Support that is available is LinuxFB.
Thanks
Sid -
wrote on 3 Jun 2014, 09:34 last edited by
Hi Sid,
i assume you use Qt5? The QWS system does not exist anymore and is replaced by the QPA system which by now is not documented very well.
http://www.kdab.com/porting-from-qt-4-to-qt-5/
However you should be fine with the linuxfb plugin. What you need to change is:
- change your application to be a QGuiApplication
@#include <QGuiApplication>@
...
@QGuiApplication theApp(argc, argv);@
- remove @-qws -display “linuxfb:/dev/fb0”@
command line parameters
- copy or move the platforms directory created by qt install to the directory containing your application (maybe it is also ok to just install the platforms directory's contents to /lib or /usr/lib?)
Cheers,
Lutz -
wrote on 3 Jun 2014, 09:41 last edited by
Oh, and dont't forget to pass
@-qpa linuxfb@
as an argument to configure when you build Qt5 to assure that the linuxfb plugin is used as default.
-
wrote on 3 Jun 2014, 10:02 last edited by
Dear Lutzhell,
Thanks for your quick reply.
Actually while building QT from source i got following Config summary:QPA backends:
DirectFB ............. no
EGLFS ................ no
KMS .................. no
LinuxFB .............. yes
XCB .................. noso i think there is no need of doing QT Configure with -qpa linuxfb.
So i want to pass the command line argument. So to run the application what arguments i should use so that it is redirected to LinuxFb.
Looking forward for your help.
Thanks lot.
Sid -
wrote on 3 Jun 2014, 10:04 last edited by
Forgot to mention that i am using QT 5.2.1.
-
wrote on 3 Jun 2014, 10:09 last edited by
Hi Sid,
my application starts nicely without any additional parameters.
This is possible because with the configure flag i say that i want to use "offscreen" (i.e. in my case: -qpa offscreen, you would use -qpa linuxfb) as default QPA platform plugin.
from ./configure --help
@-qpa <name> ......... Sets the default QPA platform (e.g xcb, cocoa, windows).@
If you don't want to use linuxfb as default you can still pass the platform parameter to your programme:
@-platform linuxfb@
-
wrote on 3 Jun 2014, 10:12 last edited by
BTW i'm using Qt 5.1.1 but the instructions should do for your version as well
-
wrote on 3 Jun 2014, 10:36 last edited by
Dear Lutzhell,
Thanks for your quick reply.
I will work on your inputs and will update you about the progress :)
-
wrote on 3 Jun 2014, 10:42 last edited by
Good luck :)
The doc for QGuiApplication gives some clues which arguments can be passed to a QGuiApplication:
http://qt-project.org/doc/qt-5/qguiapplication.html#QGuiApplication
very interesting is:
@-platform platformName[:options], specifies the Qt Platform Abstraction (QPA) plugin.
Overridden by the QT_QPA_PLATFORM environment variable.
@ -
wrote on 5 Jun 2014, 06:33 last edited by
Hi lutzhell,
Thanks for the help. I regenerated all the libraries by passing
@-qpa LinuxFB @
during the configure.
Now i am able to see the output on LinuxFB by giving the following command:
@
./gui_qt -platform linuxfb@Cheers :)
-
wrote on 5 Jun 2014, 06:34 last edited by
Marking it as solved.
8/11