[Solved] How to redirect the QT Application display to /dev/fb0
-
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 -
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 -
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 -
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@
-
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.
@