如何使用Linux FrameBuffer旋转Qt5应用程序?

Kyl*_*leL 6 linux qt framebuffer qt5 ubuntu-16.04

我有一个直接在linux帧缓冲区(没有x-Windows)上运行的嵌入式linux应用程序。现在,我们必须将显示器物理旋转180度。如何使我的Qt应用程序旋转以使其不会倒挂?我看到了使用以下选项的参考:

 -platform linuxfb:fb=/dev/fb0:rotation:180 
Run Code Online (Sandbox Code Playgroud)

但是,旋转选项似乎被忽略了。

在Ubuntu服务器16.04.6上使用Qt 5.9.2

Ric*_*Pat 4

您可以在应用程序级别处理它。使用 QML 这很容易,但是使用 QWidgets 我能想到的最好的办法就是在 a 上渲染 WidgetQGraphicsScene并像这样旋转它:

#include "mainwindow.h"
#include <QApplication>

#include <QGraphicsScene>
#include <QGraphicsView>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;

    QGraphicsScene *scene = new QGraphicsScene();
    QGraphicsView *view = new QGraphicsView();
    view->setGeometry(w.geometry());
    view->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
    view->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
    scene->addWidget(&w);
    view->setScene(scene);
    view->show();
    view->rotate(180);

    //w.show();

    return a.exec();
}
Run Code Online (Sandbox Code Playgroud)

看起来有点麻烦,不过你可以尝试一下。

另外,我认为正确的语法是-platform linuxfb:fb=/dev/fb0:rotation=180note the=而不是: Edit:但这对我来说也没有什么区别。