Захотелось мне попробовать написать Qt приложение под фреймбуфер для устройства Jetson Nano.
Почитал руководства. Скачал отсюда QtEverywhere 5.15.2. Собрал QtEverywhere с такими настройками:
$ ./configure -v -opensource -confirm-license -pkg-config -no-fontconfig -qt-freetype -qt-harfbuzz
Установил Qt. Создал директорию /usr/local/Qt-5.15.2/lib/fonts/
. Скопировал туда ttf-шрифт Terminus.
Набросал такую простенькую программу:
#include <QApplication> // For QApplication
#include <QLabel> // For QLabel
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QLabel label("Привет, Мир!");
label.show();
return app.exec();
}
Собрал её и попытался запустить с флагом -platform linuxfb
. Получил ругательство вида
QFontEngineFT: Failed to create FreeType font engine
И никакой картинки на экране!
При этом, если запустить с флагом -platform vnc
, то никаких проблем, всё отображается и показывается то, что и ожидалось. Правда, через VNC.
В чём оказалась загвоздка: при запуске с флагом -platform linuxfb
не выполняется автоматическая задача параметра pixelSize
для шрифта и pixelSize
оказывается равным нулю. Отсюда и не удаётся создать тот самый FreeType font engine
.
Но если задать самостоятельно настройки шрифта, например вот так:
#include <QApplication> // For QApplication
#include <QLabel> // For QLabel
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QLabel label("Привет, Мир!");
QFont font;
font.setFamily("Terminus");
font.setPixelSize(12);
label.setFont(font);
label.show();
return app.exec();
}
То всё срабатывает как надо и вырисовывается картинка на фреймбуфере.
Перемещено dataman из development