Название: QResizeEvent Отправлено: Novicheck от Май 25, 2015, 15:52 всем привет, возникла следующая проблема - при выводе окна в минимальном размере все на своих местах, а как только изменяю размер, resizeEvent перерисовывает координаты уже относительно mainLabel, подскажите пожалуйста в чем косяк.
Код: #include "map.h" Название: Re: QResizeEvent Отправлено: Novicheck от Май 25, 2015, 15:56 до ресайза
Название: Re: QResizeEvent Отправлено: Novicheck от Май 25, 2015, 15:58 после
Название: Re: QResizeEvent Отправлено: Bepec от Май 25, 2015, 18:24 Явно видно, что вы не учитываете размеры самих кнопок. В общем ошибка где то в ваших расчётах.
Название: Re: QResizeEvent Отправлено: Igors от Май 26, 2015, 07:38 Попробуйте так
Код
Название: Re: QResizeEvent Отправлено: Novicheck от Май 26, 2015, 09:23 Верес, я вижу что это смещение координат происходит ровно на размеры верхнего и нижнего виджетов, т.к. когда я их убираю - масштабирование происходит идеально - координаты кнопок пересчитываются идеально, а при установке верхнего лэйбла и нижней "Назад" пересчет рушится, и я бы рад их учесть, но не пойму как - потому что не ясно почему при первоначальной установке координаты принимаются от 0, 0, а при перерисовке меняются с учетом верхнего и нижнего виджетов.
я и относительно картинки пробовал пересчитывать, и тоже самое, результат тот же - сдвиг координат при ресайзе. Igors, спасибо, но не помогло - результат тот же Название: Re: QResizeEvent Отправлено: Bepec от Май 26, 2015, 12:07 Хм.
Честно, немного не пойму логику. Вы берёте данные от mainWindow, ширину высоту, и на основании их вы делаете ресайз виджетов. Когда на деле нужно брать данные от label. Вот и вся ошибка как бы. Как бы у вас цель - чтобы кнопульки были на местах на LABEL с рисунком. Т.е. ваша система координат должна идти от LABEL, а не от MainWindow. PS если неверно понял, то поправьте. PPS если не угадал, давайте проект минимальный и бум ковырять. А то разговор какой то получается безрезультатный. Название: Re: QResizeEvent Отправлено: Novicheck от Май 26, 2015, 13:39 дак я и говорю что первоначально я и рисовал координаты от лейбла, и результат при перерисовке был тот же самый что и при использовании общих координат всего mainWindow...
исходники прилагаю Название: Re: QResizeEvent Отправлено: Bepec от Май 26, 2015, 13:59 Чтото ваш проект отличается от первоначального. Так что непонятно чего вы хотите достичь :)
Название: Re: QResizeEvent Отправлено: Novicheck от Май 26, 2015, 14:16 пардон, не та сборка... цель - кнопки должны перекрывать надписи
Название: Re: QResizeEvent Отправлено: Bepec от Май 26, 2015, 14:53 Перекрывать - всмысле полностью закрывать?
PS если не секрет, то зачем? Название: Re: QResizeEvent Отправлено: Novicheck от Май 26, 2015, 15:13 закрывать. потом 3 закомментированными строками кнопки делаются невидимыми и при клике выводят инфосообщения, цепляющиеся из .ini файла
вот такая мудреность Название: Re: QResizeEvent Отправлено: Novicheck от Май 26, 2015, 15:15 по сути это просто пример одного из модулей полноценной программы...
вроде уже готовый, но этот косяк с ресайзом не дает покоя Название: Re: QResizeEvent Отправлено: Bepec от Май 26, 2015, 16:44 1) кривые измерения. Например тот же мурманск, аж на 4 пикселя ошибка :D
2) как я и сказал, вы берёте размеры окна. ОКНА. Не видимой области, не подвластной вам области, а окна в целом. А окно имеет свойство меняться и подчиняется оно ОС. Те же бордюры к примеру в полномасштабном режиме занимают 11 px, в оконном 18 px. В результате эти неподвластные вам размеры и портят всю картину. А цеплять надо именно размер QLabel. Той области, которой вы оперируете. Самый простой на мой взгляд вариант отнаследоваться от Label и реализовать свой функционал. Название: Re: QResizeEvent Отправлено: Novicheck от Май 26, 2015, 16:54 кривость это да, не придавал этому значение потому как повторюсь это лишь пример - доказательство возможности реализации идеи (в моем случае немного кривое доказательство ;D )
спасибо за совет, буду пробовать, но мое понимание технологии наследования подсказывает что это не прокатит Название: Re: QResizeEvent Отправлено: Igors от Май 26, 2015, 17:03 Novicheck, напортачили в простейшей задаче так что комментировать нет сил. Подправил первые 3 верхних города, остальное доделаете сами. Для снятия размеров давите мышу, оно сначала становится на оригинальный размер картинки (с него надо снимать, а не с потолка). Еще раз давите, тогда вверху уже цифры, перепысуете. Ленинград увеличивает размер вдвое (для отладки, у меня резолюшн небольшой). Отладочный код уберете (надеюсь)
|