如何使用 linux 帧缓冲区旋转 Qt5 应用程序?
How to rotate a Qt5 application using the linux framebuffer?
我有一个嵌入式 linux 应用程序 运行 直接在 linux 帧缓冲区上(没有 x-Windows)。我们现在必须将显示器物理旋转 180 度。如何让我的 Qt 应用程序旋转以使其不会上下颠倒?我看到了使用以下选项的参考:
-platform linuxfb:fb=/dev/fb0:rotation:180
但是,旋转选项似乎被忽略了。
在 Ubuntu 服务器 16.04.6
上使用 Qt 5.9.2
您可以在应用程序级别处理它。使用 QML 很简单,但是使用 QWidgets 我能想到的最好的方法是在 QGraphicsScene
上呈现 Widget 并像这样旋转它:
#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();
}
好像有点问题,不过你可以试一试。
另外我认为正确的语法是 -platform linuxfb:fb=/dev/fb0:rotation=180
注意 =
而不是 :
编辑: 但这对我也没有影响。
我有一个嵌入式 linux 应用程序 运行 直接在 linux 帧缓冲区上(没有 x-Windows)。我们现在必须将显示器物理旋转 180 度。如何让我的 Qt 应用程序旋转以使其不会上下颠倒?我看到了使用以下选项的参考:
-platform linuxfb:fb=/dev/fb0:rotation:180
但是,旋转选项似乎被忽略了。
在 Ubuntu 服务器 16.04.6
上使用 Qt 5.9.2您可以在应用程序级别处理它。使用 QML 很简单,但是使用 QWidgets 我能想到的最好的方法是在 QGraphicsScene
上呈现 Widget 并像这样旋转它:
#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();
}
好像有点问题,不过你可以试一试。
另外我认为正确的语法是 -platform linuxfb:fb=/dev/fb0:rotation=180
注意 =
而不是 :
编辑: 但这对我也没有影响。