红联Linux门户
Linux帮助

qt5 arm linuxfb旋转显示非eglfs显示

发布时间:2017-05-19 11:32:31来源:linux网站作者:crl6
网上的旋转显示都是这种方法:
#include <QApplication>
#include <QGraphicsView>
#include <QGraphicsProxyWidget>
#include "./form.h"
int main(int argc, char *argv[])
{    
QApplication a(argc, argv);
Form *form = new Form;
QGraphicsScene *scene = new QGraphicsScene;    
QGraphicsProxyWidget *w = scene->addWidget(form);   
w->setRotation(90);    
QGraphicsView *view = new QGraphicsView(scene);    
view->show();
return a.exec();
}
 
此方法缺点:
若某个窗口与主窗口没有父子关系,这个窗口没有添加到scene里,那么显示这个窗口时就不会同步转屏。
而且这样做会很耗费cpu资源。同样一个动态的hello world 显示。使用了这段代码后会慢很多。cpu使用率100%。
 
正文:
笔者通过修改qt5源码可以支持想qt4那样设置环境变量进行旋转显示,修改代码后支持鼠标的正常使用,触摸坐标不正常(要正常使用需要修改tslib的校准程序,最简单的方法是在校准程序里把5个光标一起全部显示出来然后自己从某个角顺时针或逆时针点击光标,具体情况要看你旋转多少度显示。当然也还有其它的方法,可能你的触摸也正常因为我的tslib源码之前就是修改过的)。
qt5源码修改内容可以看补丁文件(地址:http://download.csdn.net/detail/longruic/9846273,qt5 arm linuxfb旋转显示非eglfs显示的补丁)。我是先备份源码,然后修改测试OK后,再制作补丁这方便知道如何修改源码。
最后运行程序时加入参数即可,例如:
-platform linuxfb:fb=/dev/fb0:rotation=90
或者设置环境变量:
export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0:rotation=90
 
本文永久更新地址:http://www.linuxdiyf.com/linux/30901.html