Qt + Wayland jak ustawić pozycję okna ?

0

Na Windows wszystko działa zgodnie ze zdrowym rozsądkiem i dokumentacją.

A ten sam kod uruchomiony na Wayland nie współpracuje

QRect r = geometry();
// modyfikacja r
setGeometry(r);

wartość zwracana przez geometry() się zmienia ale okno ani drgnie.
Jak przesune okno myszka to geometry() pozostaje bez zmian

2

Wydaje mi się, że Wayland nie oferuje takiej opcji (jest o to cała drama, że według twórców Waylanda pozycje top-level okien powinny być właśnie zarządzane wyłącznie przez menedżera okien (Sway, Weston itd.), a nie aplikację).

Trochę ma to sensu, no bo w gruncie rzeczy np. w tiling window managerach akcja przesuwania okna nie ma na ogól sensu 🙃

0

A na Xach działa? Jeśli tak - albo trzeba zrobić na Waylandzie inaczej albo po prostu nie działa w danej jego implementacji. Jak @Patryk27 napisał: to jest zgodne z filozofią Waylanda, okno decyduje tylko co, ale nie gdzie ma rysować, także być może będziesz musiał skorzystać z jakiegoś IPC (dbus?) i z WMem pogadać.

0

Strasznie mi namieszała ta zmiana xorg -> wayland , niestety nie mogę tego przeskoczyć bo wymuszone przez producenta komputerów.
Na tą chwilę wgryzanie się w nowe wydaje się trochę za trudne,
może ktoś wie jak uruchomić przykłady Qt +Wayland ? np. minimal-cpp

Na tą chwilę to mam trochę obejście problemu, bo eksperymentując z przykładem z Qt: "Window Flags Example" i zbadałem sobie wpływ różnych ustawień parametrów na zachowanie okna, zauważyłem że okno które:

  • dziedziczy po QMainWindow
  • rodzicem jest główne okno aplikacji
  • oraz ma ustawione SetWindowFlags( Qt::CustomizeWindowHint )
    takie okno zachowuje się normalnie. Problem: nie ma paska tytułowego, ale pasek mogę sam narysować wiec użytkownik nawet nie zauważy różnicy

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.