![]() |
|
|
![]()
|
|
| OlegIT |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 684 Регистрация: 5.4.2006 Репутация: нет Всего: нет |
В конструкторе MainWindow создаю QWidget. Этот QWidget изначально нужно сместить в заданную позицию (затем его позиция будет меняться), вызываю в конструкторе MainWindow метод QWidget::move(X,Y);, но эффекта нет, он работает только когда всё создано, например, по нажатию на клавишу, от мыши, …. Событие Create не нашёл, и вообще стартового event нет. Виртуальная функция closeEvent есть, а createEvent или что-то подобное тоже нет или я не вижу. Из какой функции нужно вызывать этот метод, что б всё срабатывало?
|
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
Виджет лучше добавлять в центральный виджет (который можно сделать QScrollView, если нужны будут полосы прокрутки), а не в само главное окно. Иначе могут быть проблемы при добалении меню, тулбаров и QDockWidget'ов.
Также рассмотри возможность использования QGraphicsWidget - возможно твой виджет лучше сделать QGraphicsItem. |
|||
|
||||
| OlegIT |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 684 Регистрация: 5.4.2006 Репутация: нет Всего: нет |
У меня всё на центральном виджите строится setCentralWidget(widget);, а в widget добавляются другие виджиты, лайауты, в том числе и проблемный виджит. С начало я создаю все виджиты вплоть до центрального, а потом уже нужный виджит пытаюсь переместить. Программа работает, не жалуюсь, только стартовать правильно не получается.
В конструкторе MainWindow
Не помогло. |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
Перехватывай у центрального виджета
Добавлено через 2 минуты и 53 секунды Кстати, если используются лейауты - move() будет игнорироваться. Лейаут сам поставит виджет, куда он хочет. |
|||
|
||||
| OlegIT |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 684 Регистрация: 5.4.2006 Репутация: нет Всего: нет |
Сделал класс наследник от QWidget, в нём переопределил void resizeEvent(QResizeEvent *);, определил сигнал, по которому передал сообщение resizeEvent главному окну (signals –> slots) в слоте главного окна вызвал DirFix_Widget->move(…);qApp->processEvents();. Не помогло.
|
|||
|
||||
| OlegIT |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 684 Регистрация: 5.4.2006 Репутация: нет Всего: нет |
Какое-то движение к решению вопроса наметилось, когда я переопределил виртуальную функцию
Правда, пришлось принимать меры, флажками, чтобы код срабатывал один раз. Но всё равно правильное позиционирование происходит только после деактивации окна, update(); после move(…) не помогает. |
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |