LINUX.ORG.RU

Как в Qt запоминать положение окна в LXDE?

 , , , , положение


0

1

В Qt есть метод QWidget::saveGeometry(), который запоминает позцию и размер в QByteArray. Но такое запоминание неподдерживаемо: неизвестен формат, формат может поменяться, сложность редактирования руками запомненных сериализованных данных.

Вместо этого я сохраняю геометрию согласно данной документации:

http://doc.qt.io/qt-5.9/application-windows.html#window-geometry

Проблема сейчас в запоминании положения окна. Я сохраняю два числа из pos(). А восстанавливаю положение окна через move(), куда скармливаю значения pos(). И это более-менее работает для KDE и Gnome.

Но вот в LXDE (с OpenBox), при восстановлении, окно съезжает наверх на ширину заголовка окна. И еще смещается вбок на пару пикселей.

Да, я перевел раздел X11 Peculiarities, и понимаю что сделать правильно нелегко. Но может быть есть какой-нибудь готовый способ, помимо saveGeometry(), запомнить правильное положение окна в виде двух циферек?

★★★★★

Последнее исправление: Xintrea (всего исправлений: 1)

Вот мне много раз говорили эту фразу за то что я с гуем канапаюсь, каждую галочку и все такое. Но сейчас эта фраза к тебе:

Ты придумал проблему сам.

И вот почему. СейвГеометри работает? Работает. Тебя не устраивает кубайтаррай. И что? Ну сериализует он как-то в текст. Вот сейчас у меня перед глазами конфиг влц плеера на 4 культях и моей недоделки на пятых — вполне себе та же сериализация. Но! Даже если будет не та же, что плохого случится? Да ничего. При чтении конфига и десериализации значений ты должен проверить (оно само пытается распаковать и проверяет валидность) значение которое тебе вернули, и если оно ошибочное — тупо выдавай дефолтный вид.

Чел, сам обновлял культи, сам знал что что-то может отвалиться. Единственное что для него сломается в твоем приложении — положение и размеры окна. Ужс то какой.

deep-purple ★★★★★
()
Ответ на: комментарий от deep-purple

СейвГеометри работает? Работает.

Нет, не работает. И saveGeometry() тоже не может записать правильную позицию окна в LXDE. С ней так же окно уезжает вверх на высоту заголовка. И если заголовок был вверху экрана (а так обычно и происходит), то окно восстановится так, что заголовок становится недоступным.

Xintrea ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.