mu_de_yu的个人主页

http://www.qtcn.org/bbs/u/172744  [收藏] [复制]

mu_de_yu

  • 10

    关注

  • 4

    粉丝

  • 9

    访客

  • 等级:新手上路
  • 总积分:31
  • 男,1990-05-27

最后登录:2018-10-11

更多资料

日志

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):




分类:嵌入式 Qt|回复:0|浏览:1286|全站可见|转载
 

下一篇:

上一篇:

Powered by phpwind v8.7 Certificate Copyright Time now is:04-19 20:46
©2005-2016 QTCN开发网 版权所有 Gzip disabled