Blokowanie orientacji ekranu, QML Qt

0

Jak w temacie.
Jak zabrać się do zablokowania orientacji ekranu w QtQuick z QML ( na Windows Phone)?
W wolnych chwilach pracuję sobie nad aplikacją i aż się prosi, żeby w kilku miejscach, miała tylko orientację portrait albo tylko landscape.
W QML właściwość "orientation" ( dla Screen z "import QtQuick.Window 2.0") jest "read-only", nie znalazłem sposobu żeby skorzystać z flag C++ dla wybranych stron mojej aplikacji ( chociaż szczerze mówiąc, nie zagłębiałem się w to od tej strony, tylko pobieżnie czegoś poszukałem). Ostatnie podejście które mogło być jakimś dobrym kierunkiem, to była próba zablokowania akcelerometrów w smartfonie ( ale przy moich próbach ze skutkiem, jak wcześniej).
Do poruszania się w aplikacji używam StackView.

Nie lubię pytać, jeśli nie doszedłem sam do jakichś wniosków albo sposobu, ale w sumie naszukałem się, i guzik mam.
Jeszcze takie pytanie na koniec: czy odpowiedź jest może jakaś oczywista, czy zmienianie takich rzeczy to jest raczej grząski grunt?

0

Odgrzewam kotleta, żeby była odpowiedź.
Po długich poszukiwaniach udało mi się znaleźć odpowiedź, i dopiero sobie teraz przypomniałem, że miałem dodać to co ustaliłem.

Jak zablokować orientację ( niechciany obrót) ekranu w QtQuick/QML ( nie rozróżniam na Android/WP- o tym później)??

Zgodnie z dokumentacją Qt oraz tym, co da się znaleźć na stackoverflow i kilku nielicznych wątkach na ten temat- w zasadzie nie da się ( zrobić tego z poziomu Qt c++ albo Qt QtQuick/QML). Znalazłem kilka tematów na bugtracker Qt, i było tam wspomniane, że nie zostało to naprawione/uwzględnione w "najnowszej wersji" ( na tamten czas, tematy założone rok temu), w tym czasie wyszedł nowy update ( więc nic się też w tym najnowszym nie zmieniło). W jeszcze starszych wersjach Qt była możliwość ustawienia wspieranej orientacji ekranu, ale zrobili rewers.

Mianowicie, osoby które tworzą używając template dla Androida ( nie wiem czy dobrze się wyraziłem), mogą zwyczajnie zmienić kilka linijek w pliku AppxManifest. Z tego co wyczytałem, plik ten normalnie można sobie utworzyć i dodać do projektu z poziomu Qt Creatora klikając ikonkę "template" ( ale to tylko dla Androida, jako, że nie mam tej sekcji u siebie, to tutaj przekazuję tylko sumę wiedzy, którą wyczytałem). Dodaje się linijkę, którą podaję niżej.

Dla WP ( mój przypadek- czysty QtQuick), nie ma możliwości automatycznego wygenerowania pliku manifest i dodania go do drzewka projektu ( mam na myśli z poziomu Qt Creatora). Plik ten jednak jest tworzony automatycznie dla wersji release ( debug nie jest wspierany na WP kits, więc pozostaje tylko "release") przy użyciu VS 2013.
Ja zrobiłem tak, że zbudowałem sobie kompilatorem wersję release ( chodzi o to, żeby mieć folder z całą paczką plików utworzony przez kompilator) i tam mamy plik AppxManifest- on będzie edytowany.
Należy go otworzyć dowolnym edytorem tekstowym i dodać linijkę.

 
        <m3:InitialRotationPreference> // dodana linijka
          <m3:Rotation Preference="portrait" /> // dodana linijka -  można zmienić na landscape
        </m3:InitialRotationPreference> // dodana linijka
      </m3:VisualElements> 

Przy każdej następnej kompilacji programu, zostanie uwzględniona orientacja jaką ustawiliśmy. Można odpalać w ten sposób na telefonie i działa- sprawdzone.

Dla androida pewnie nie muszę dorzucać, bo nie ma z ustawieniem tego problemu, ale żeby było. Widać, co trzeba ustawić.

        <activity
            android:name="com.example.demo_spinner.MainActivity"
            android:label="@string/app_name"
            android:screenOrientation="portrait" >
        </activity>

Mam nadzieję, że nie produkuję się z czymś oczywistym. Zapytałem dwa razy na forum i niestety nie otrzymałem żadnej odpowiedzi.

Wniosek dla Qt QML i blokowania orientacji ekranu: nie bawić się i nie szukać w properties w QML, ani w c++, pisać na Androida, albo od razu przejść do edycji pliku manifest.

1 użytkowników online, w tym zalogowanych: 0, gości: 1