日志
QT5 嵌入式屏幕旋转90度
2017-01-18 10:01
思路参考:http://blog.csdn.net/linuxsmallping/article/details/40788189
最近项目需要,要用Qt5在开发板上做竖屏界面开发,之前记得Qt4翻转屏的方法是:设置一下环境变量,且需要qws支持。但是在Qt5中取消了qws,用QPA取代了,这可怎么办?这个问题折腾了好久,最后参考网上的一个方法,利用qt的场景视图view-scene框架,将画面加载到画布scene里,然后通过旋转画布来实现“屏幕旋转”,具体如下: 1.将项目所有界面加载到一个主窗口类MainForm(类似Mainwindow功能),加载通常用父子窗口来实现。 2.在main函数里,将MainForm加入QGraphicsScene中,然后窗口作为QGraphicsScene的QGraphicsProxyWidget成员,调用QGraphicsProxyWidget的setRotation方法实现屏幕翻转; 此方法初步解决了qt5屏幕旋转的问题,但有个问题要处理: 对于有些独立的顶层非主窗口,由于没有与其他窗口构成父子关系,那么加载这些窗口时,就不会实现同步旋转。 希望大家给点意见,或者你有其他更优的方法实现旋转,欢迎指点。 测试例子程式main函数代码如下: #include "mainwindow.h" #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); // 旋转90度 QGraphicsView *view = new QGraphicsView(scene); view->resize(810, 610); view->show(); return a.exec(); } 移植后运行效果图(800*600): |
下一篇: 无
上一篇: 无