Здравствуйте, гость ( Вход | Регистрация )
|
coo_zoo |
15.10.2012, 0:17
Сообщение
#1
|
|
Новичок Группа: Новичок Сообщений: 4 Регистрация: 8.3.2010 Пользователь №: 1517 Спасибо сказали: 0 раз(а) Репутация: 0
|
Здравствуйте,
Итак не много замучился вопросом, как же остановить рекурсию Идея следующая сохранение пропорций окна при изменении его размеров. mainwindow.h Раскрывающийся текст main.cpp Раскрывающийся текст mainwindow.cpp Раскрывающийся текст Главное окно имеет всего лишь два элемента label и label_2 при изменении размеров окна туда выводятся высота и ширина. Проблема в том что по понятным причинам вызывается рекурсия, которая кстати по непонятным причинам Прошу помощи и дельного совета как "отсеять" рекурсию? У меня была идея если не нажата левая кнопка мыши значит прекратить. Но в силу своего нубизма не понимаю как это сделать, хотя вроде интуитивно догадываюсь что как-то фильтрами, но мои попытки не увенчались успехом. Буду благодарен за помощь. |
|
|
|
![]() |
|
ornelius |
17.10.2012, 11:56
Сообщение
#2
|
|
Новичок Группа: Новичок Сообщений: 4 Регистрация: 17.10.2012 Пользователь №: 3565 Спасибо сказали: 0 раз(а) Репутация: 0
|
Проверка if(sizewidth!=oldsizewidth) -- это суть условие выхода из рекурсии. В данном случае проверяется, что ширина окна не изменилась. А должно проверяться, что пропорция окна соответствует требуемой.
Вот этот код всегда выходит из рекурсии: Первый раз resizeEvent вызывается, когда пользователь изменяет размер, второй раз -- в результате ресайза. Но во второй раз resize уже не вызывается --> рекурсия кончилась. Но такой вариант неправильный -- размер окна меняется после того, как пользователь отпустил мышь. Лучший вариант -- сделать внутренний виджет, для него перегрузить int QWidget::heightForWidth ( int w ) const, потом засунуть в Layout и в главное окно. |
|
|
|
coo_zoo Resize когда же остановится 15.10.2012, 0:17
Алексей1153 наверное, вот так
class MainWindow : public Q... 15.10.2012, 8:27
coo_zoo Цитата(Алексей1153 @ 15.10.2012, 8:27) на... 15.10.2012, 21:00
Алексей1153 если в слоте ресайза менять размер, то он сам себя... 16.10.2012, 14:50![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 10.1.2026, 14:10 |