Russian Qt Forum
Мая 22, 2025, 13:55
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Пользовательский интерфейс (GUI)
>
(РЕШЕНО) Какая-то хрень при saveGeometry() у QWidget на QDialog
Страниц:
1
[
2
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: (РЕШЕНО) Какая-то хрень при saveGeometry() у QWidget на QDialog (Прочитано 11974 раз)
Гурман
Гуру общения
Offline
Сообщений: 1442
Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12
Re: Какая-то хрень при saveGeometry() у QWidget на QDialog
«
Ответ #15 :
Апреля 22, 2015, 22:25 »
На самом деле, и то, и другое, но и ни то, ни другое. Поскольку в описании restoreGeometry() всё-таки есть слова
Restores the geometry and state
top-level
widgets stored in the byte array geometry
. Но это всё. Больше нигде ничего про то, что это только для виджетов "верхнего уровня", то есть, десктопных. Даже в развернутом описании "Restoring a Window's Geometry" не упоминается, что это не работает для дочерних виджетов. В результате - не только я этого не заметил, но также и все, кто читал эту ветку. Иначе указали бы - я в самом первом сообщении спросил, "может я чего-то пропустил?".
Если бы хотя бы было написано "Restores the geometry and state
of only top-level
widgets stored in the byte array geometry" - совсем другое дело. Я бы такое не пропустил.
Записан
2^7-1 == 127, задумайтесь...
m_ax
Джедай : наставник для всех
Offline
Сообщений: 2095
Re: Какая-то хрень при saveGeometry() у QWidget на QDialog
«
Ответ #16 :
Апреля 22, 2015, 22:30 »
Цитата: Гурман от Апреля 22, 2015, 19:05
Кто-нибудь еще на Qt 5.x в Виндах, Линухе? Для основательности багрепорта...
У меня выводит
QPoint(0,0)
QPoint(0,0)
Qt 5.2.1 (linux)
Записан
Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..
Arch Linux Plasma 5
Гурман
Гуру общения
Offline
Сообщений: 1442
Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12
Re: Какая-то хрень при saveGeometry() у QWidget на QDialog
«
Ответ #17 :
Апреля 22, 2015, 22:50 »
Цитата: m_ax от Апреля 22, 2015, 22:30
Цитата: Гурман от Апреля 22, 2015, 19:05
Кто-нибудь еще на Qt 5.x в Виндах, Линухе? Для основательности багрепорта...
У меня выводит
QPoint(0,0)
QPoint(0,0)
Qt 5.2.1 (linux)
У Linux менеджер десктопа иначе рабочее пространство вычисляет. Впрочем, уже не актуально, проблема решена.
Записан
2^7-1 == 127, задумайтесь...
Bepec
Гость
Re: (РЕШЕНО) Какая-то хрень при saveGeometry() у QWidget на QDialog
«
Ответ #18 :
Апреля 22, 2015, 23:18 »
QPoint(0,0)
QPoint(0,0)
W7 x64 ну да написано всё у меня
QPoint(0,0)
QPoint(0,40)
c панелью задач вверху
PS в принципе логика то понятна - сохраняет геометрию по отношению к экрану) а не положение на форме
«
Последнее редактирование: Апреля 22, 2015, 23:29 от Bepec
»
Записан
Гурман
Гуру общения
Offline
Сообщений: 1442
Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12
Re: (РЕШЕНО) Какая-то хрень при saveGeometry() у QWidget на QDialog
«
Ответ #19 :
Апреля 22, 2015, 23:44 »
Цитата: Bepec от Апреля 22, 2015, 23:18
QPoint(0,0)
QPoint(0,0)
W7 x64 ну да написано всё у меня
QPoint(0,0)
QPoint(0,40)
c панелью задач вверху
PS в принципе логика то понятна - сохраняет геометрию по отношению к экрану) а не положение на форме
Да, так и должно быть для виджетов, у которых нет родителей - поэтому у меня все окна давно с этим работали. Но у виджетов, у которых есть виджеты-родители, функции move() и pos() работают уже в системе координат
родителя
, а не экрана. Соответственно, saveGeometry() тоже генерирует байтовый массив с координатами
в системе родителя
- я проверял, это именно так. Но restoreGeometry() при восстановлении на это чихает, и восстанавливает в координатах экрана. Хотя ничего не стоило бы загнать в байтовый массив geometry признак наличия родителя - и восстанавливать в его координатах, и выдавать true. Или выдавать false, если производится попытка восстановить такой виджет без привязки к родителю (но тем не менее, восстанавливать, мало ли...). И описать всё это в доке.
Представляю себе, как бы потом-потом было бы весело, если бы я сейчас разрабатывал на компьютере с тулбаром...
внизу
. Я бы глюк не словил, а потом на машинах с тулбаром вверху он был полез.
«
Последнее редактирование: Апреля 22, 2015, 23:46 от Гурман
»
Записан
2^7-1 == 127, задумайтесь...
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: (РЕШЕНО) Какая-то хрень при saveGeometry() у QWidget на QDialog
«
Ответ #20 :
Апреля 23, 2015, 08:22 »
Цитата: Гурман от Апреля 22, 2015, 20:36
Igors
, ваши 22 - это высота тулбара на вашем рабочем столе, причем он у вас наверху экрана находится. Так?
Почти. Это высота меню бара который на Мac всегда вверху и 1 для всех приложений
В любом случае юзать save/restore для чайлд виджетов - неудачная затея, они для этого явно не предназначены. Сохранить просто geometry() и восстановить через setGeometry(). И то по-хорошему не нужно, должны быть лайауты
Записан
Гурман
Гуру общения
Offline
Сообщений: 1442
Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12
Re: (РЕШЕНО) Какая-то хрень при saveGeometry() у QWidget на QDialog
«
Ответ #21 :
Апреля 23, 2015, 16:16 »
В том то и дело, что недостаточно явно. Одного слова в руководстве для явности недостаточно. Теперь то да, когда посмотрел в исходник restoreGeometry() я просто geometry сохраняю.
Лэйауты в моём случае - это из пушки по воробьям. Может когда-нибудь и будет иметь смысл. Но нельзя всё делать сразу, потом будет не за что деньги брать.
Баг в том, что saveGeometry() не учитывает параметры десктопа, а restoreGeometry() учитывает. Несимметрично работают. Напишу репорт...
Записан
2^7-1 == 127, задумайтесь...
PKEv
Гость
Re: (РЕШЕНО) Какая-то хрень при saveGeometry() у QWidget на QDialog
«
Ответ #22 :
Октября 07, 2015, 14:31 »
Похоже такая же ерунда:
https://github.com/tux3/qTox/issues/2349
Записан
Страниц:
1
[
2
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...