Wpis z mikrobloga

Mam aplikację napisaną w C++ pod Raspberry. Interfejs aplikacji zrobiony w QML. Gdy odpalam aplikację i dostaję warningi.

EGLFS: To override, set QT*QPA*EGLFS*PHYSICAL*WIDTH and QT*QPA*EGLFS*PHYSICAL*HEIGHT (in millimeters).


Eksportuje zmienne środowiskowe i dalej to samo. Gdy tego samego QML odpalam za pomocą qmlscene to wszystko działa jak należy. Pytanie takie, czemu dla programu napisanego w C++, który odpala tego QML nie są widoczne te zmienne środowiskowe?

Przekompilowuje właśnie całe QT i na sztywno w kodzie zmieniłem te rzeczy, które mnie interesują, ale to słabe rozwiązanie, bo trwa bardzo długo i jest mało uniwersalne. Czy ma ktoś jakiś pomysł?

#pytanie #programowanie #qml #qt #cpp #raspberrypi
  • 6
@Vetinari: tak jak mówiłem, dodaje te zmienne środowiskowe. Gdy uruchomię plik QML za pomocą qmlscrene (qmlscrene main.qml) to widzi je, gdy natomiast uruchomię za pomocą prostego programu:

#include <QtGui/QGuiApplication>


#include "qtquick2applicationviewer.h"



int main(int argc, char *argv[])


{


QGuiApplication app(argc, argv);


QtQuick2ApplicationViewer viewer;


viewer.setMainQmlFile(QStringLiteral("main.qml"));


viewer.showExpanded();


return app.exec();


}

To już nie widzi.
@Vetinari: oka, mój błąd. Potrzebowałem uruchamiać program jako root, więc używałem sudo. Wydawało mi się, że sprawdzałem uruchamianie bez sudo i ciągle miałem te warningi. Jednak nie. W dokumentacji sudo znalazłem, że jeżeli chcemy mieć zmienne środowiskowe takie jak użytkownik to musimy dodać parametr -E. Wszystko działa. Dziękuję za pomoc.