Russian Qt Forum
Ноябрь 24, 2024, 15:58
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Общие вопросы
>
аналог WM_CREATE или onCreate
Страниц: [
1
]
2
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: аналог WM_CREATE или onCreate (Прочитано 10946 раз)
Tertium Organum
Гость
аналог WM_CREATE или onCreate
«
:
Май 08, 2007, 15:20 »
где лучше делать настройку контролов на главном окне?
в конструкторе главного окна не получается - например, размер сплиттера на этом этапе неверный, поэтому задать ему размеры чайлдов корректно не получается (x, splitter.width - x).
в винапи есть WM_CREATE, в VCL onCreate или чтото типа, а в QT?
Записан
goer
Гость
аналог WM_CREATE или onCreate
«
Ответ #1 :
Май 08, 2007, 18:49 »
Можно например в resizeEvent(QResizeEvent *e).
Записан
Разуев Максим
Гость
аналог WM_CREATE или onCreate
«
Ответ #2 :
Май 08, 2007, 20:20 »
Можно в showEvent или обработать WM_CREATE через winEvent ( MSG * message, long * result ).
Записан
goer
Гость
аналог WM_CREATE или onCreate
«
Ответ #3 :
Май 08, 2007, 21:05 »
showEvent вызывается перед показом виджета и в этот момент действительно есть вероятность получить невалидную геометрию виджетов.
WM_CREATE платформозависимое решение. Надо стараться не забивать гвозди микроскопом.
Записан
Alex03
Гость
аналог WM_CREATE или onCreate
«
Ответ #4 :
Май 10, 2007, 07:45 »
А если в конструкторе:
QTimer::singleShot(0, this, SLOT(slotStart()));
А в этом slotStart() всё что надо?
добавлено спустя 1 минуту:
Или в конструкторе же postEvent самому себе, и его последующая обработка.
Записан
Tertium Organum
Гость
аналог WM_CREATE или onCreate
«
Ответ #5 :
Май 10, 2007, 11:20 »
помогло повесить фильтр на сплиттер и при первом пришедшем ресайзе выставлять размер его частей
но мля это вобще неудобно - а если хренова туча сплиттеров? и прочей нечисти?
В VCL на OnInit весь интерфейс уже собрался и таких размеров, каких надо. И тут-то можно его весь поперенастроить к ентовой матери
Ну неужели в QT ничего такого нет??
Записан
pastor
Administrator
Джедай : наставник для всех
Offline
Сообщений: 2901
аналог WM_CREATE или onCreate
«
Ответ #6 :
Май 10, 2007, 11:33 »
2 Tertium Organum: goer предложил resizeEvent(QResizeEvent *e). Чем он тебя не устроил? Переопредели его для главного окна и выставляй размеры чего хочешь
Записан
Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
goer
Гость
аналог WM_CREATE или onCreate
«
Ответ #7 :
Май 10, 2007, 11:47 »
По поводу resizeEvent. Если размеры окна можно менять то однозначно надо класть политику размещения виджетов именно в этот хэндл, причем использовать относительные координаты.
Цитировать
а если хренова туча сплиттеров?
А если очень много виджетов и политики их размещения не особо мудренные, то можешь обратить внимание на verticalStretch () и horizontalStretch() - экономит кучу времени.
Записан
Tertium Organum
Гость
аналог WM_CREATE или onCreate
«
Ответ #8 :
Май 10, 2007, 13:26 »
pastor:
для одного сплиттера все ок
если повеситься на ресайз окна - то у сплиттера еще не валидный размер
не, стретч не нужен
Записан
goer
Гость
аналог WM_CREATE или onCreate
«
Ответ #9 :
Май 10, 2007, 14:09 »
Цитировать
если повеситься на ресайз окна - то у сплиттера еще не валидный размер
Ну если ты не хочешь использовать stretch тогда перехватывай resizeEvent сплитера или наследуйся от него и переопределяй хэндл.
В чем проблема то?
Записан
Tertium Organum
Гость
аналог WM_CREATE или onCreate
«
Ответ #10 :
Май 10, 2007, 14:46 »
мля
проблема в том что видимо нет нормального сообщения, слота или чего там в этой куте есть, которое бы говорило - все, окно создано, все его контролы приобрели заданный в дизигнере размер и можно их подкрутить.
вместо этого приходится для каждого сплиттера перехватывать ресайз.
и вообще вся эта дибиловатая система лайаутов трещит по швам - не могу понять, почему я не могу задать у сплиттера размер положенных в него контролов в дизайн-тайме? нахрена он тогда нужен? вместо этого я трачу хренову тучу времени чтоб эти лайауты настроить (сравнительно со скоростью клепки VCL-ного интерфейса), а потом еще перехватывать ресайз и таки задавать размеры составляющих сплиттера. Максимальный размер левого контрола - 400, минимальный - 100, а я ну хоть убей хочу по дефолту 200 и вот так приходица. а сплиттеров - N. На каждый фильтр вешать?
и что, мне еще прикажете наследоваться от контрола только для того чтобы задать его свойство? конечно, чо проще, зайди со стороны пожарной лестницы соседнего дома, заберись по ней на крышу, а с крыши - прямиком на свой дом, а там уже аккуратно по водосточной трубе к себе на балкон...
а так проблем нет, все работает
добавлено спустя 58 секунд:
чем не устроили якоря разработчиков QT?...
Записан
pastor
Administrator
Джедай : наставник для всех
Offline
Сообщений: 2901
аналог WM_CREATE или onCreate
«
Ответ #11 :
Май 10, 2007, 14:50 »
Цитата: "Tertium Organum"
pastor:
для одного сплиттера все ок
если повеситься на ресайз окна - то у сплиттера еще не валидный размер
Очень странно, у меня похожий вариант работает (задаеться ширина детей, выставляю ширину колонок для QTableWidget и т.д). Даже сделат только что тестовый пример, сплитер двигаеться без проблем
Qt 4.2.3
Записан
Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Tertium Organum
Гость
аналог WM_CREATE или onCreate
«
Ответ #12 :
Май 10, 2007, 14:53 »
ну вот так вот.
та же 4,2,3 свежесобранная
на ресайз окна - размер не корректный, на ресайз сплиттера - верный
там этот сплиттер в лайауте в лайауте в лайауте в лайауте, о как. может потому. окно сложное
Записан
pastor
Administrator
Джедай : наставник для всех
Offline
Сообщений: 2901
аналог WM_CREATE или onCreate
«
Ответ #13 :
Май 10, 2007, 15:01 »
Цитата: "Tertium Organum"
ну вот так вот.
та же 4,2,3 свежесобранная
на ресайз окна - размер не корректный, на ресайз сплиттера - верный
там этот сплиттер в лайауте в лайауте в лайауте в лайауте, о как. может потому. окно сложное
У тебя есть валидный размер главного окна при resizeEvent. Попробуй задавать размеры сплитеров исходя из этого.
ЗЫ: Чтобы ты не говорил, лайауты в Qt - это очень мощная система. Размещение виджетов в Delphi нервно курит в сторонке по сравнению с ней.
Записан
Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Tertium Organum
Гость
аналог WM_CREATE или onCreate
«
Ответ #14 :
Май 10, 2007, 15:16 »
дергается очень. в куте.
нащет дельфи (упаси меня конечно бог писать на паскале, я писал только в билдере
) - все там хорошо, даже не знаю что там плохо - якорями решается все, главное - в реализации примитивно, а значит меньше глючит. разве что нет такого изврата, что каждый контрол по разному растет с изменением размера парента.
у куте в этой области вообще колбаса. задумка хорошая но написано через жопу. при изменении размеров главного окна контролы дрыгаются как эпилептики... да и вобще от сатаны это все , а деваца некуда, надо косить
Записан
Страниц: [
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 сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...