[Не решено]MdiArea, закрытие потомков |
Здравствуйте, гость ( Вход | Регистрация )
[Не решено]MdiArea, закрытие потомков |
breeve |
13.5.2010, 13:49
Сообщение
#1
|
Участник Группа: Участник Сообщений: 188 Регистрация: 26.12.2009 Пользователь №: 1336 Спасибо сказали: 9 раз(а) Репутация: 1 |
Если в Mdi приложении открыто одно окно и я его закрываю падает вся программа.
Есть функция, смена фокуса. При смене фокуса в PropertyWindow меняются параметры на параметры того окна которое сейчас активно. Если я пишу: Раскрывающийся текст
То все правильно привсаивается, меняются параметры, но при закрытии все падает. Еще я пытался сделать так, у меня есть указатель который указывает на коно которое активно и зменяет его или забирает от туда данные. Указатель класса Test*. Делал как QMdiSubWindow. И изменял параметры через pOpenTest->widget()->myMethod(); Сообщение отредактировал breeve - 14.5.2010, 15:23 |
|
|
breeve |
13.5.2010, 15:02
Сообщение
#2
|
Участник Группа: Участник Сообщений: 188 Регистрация: 26.12.2009 Пользователь №: 1336 Спасибо сказали: 9 раз(а) Репутация: 1 |
Заметил такую особенность что программа падает, не при закрытии окна-потомка, а если фокус с окна-потомка перейдет на что-либо другое. если перевести фокус на другое приложение, мое тоже падает.
Сообщение отредактировал breeve - 13.5.2010, 15:02 |
|
|
grio |
13.5.2010, 15:05
Сообщение
#3
|
Студент Группа: Участник Сообщений: 87 Регистрация: 11.11.2009 Пользователь №: 1221 Спасибо сказали: 6 раз(а) Репутация: 0 |
Когда закрываешь дочернее окно - посылай сигнал родителю.
Я делаю так, к примеру:
Сообщение отредактировал grio - 13.5.2010, 15:08 |
|
|
breeve |
13.5.2010, 15:31
Сообщение
#4
|
Участник Группа: Участник Сообщений: 188 Регистрация: 26.12.2009 Пользователь №: 1336 Спасибо сказали: 9 раз(а) Репутация: 1 |
grio, сделал так как ты сказал, те же яйца только в профиль.. Программа все равно падает
Сообщение отредактировал breeve - 13.5.2010, 15:47 |
|
|
grio |
13.5.2010, 17:07
Сообщение
#5
|
Студент Группа: Участник Сообщений: 87 Регистрация: 11.11.2009 Пользователь №: 1221 Спасибо сказали: 6 раз(а) Репутация: 0 |
grio, сделал так как ты сказал, те же яйца только в профиль.. Программа все равно падает Получается, что возможно проблема не связана с MdiArea. Зачем ты используешь qobject_cast, когда есть специальная функция QMdiArea::currentSubWindow () const Сообщение отредактировал grio - 13.5.2010, 18:12 |
|
|
breeve |
14.5.2010, 9:48
Сообщение
#6
|
Участник Группа: Участник Сообщений: 188 Регистрация: 26.12.2009 Пользователь №: 1336 Спасибо сказали: 9 раз(а) Репутация: 1 |
Зачем ты используешь qobject_cast, когда есть специальная функция QMdiArea::currentSubWindow () const Есть функция но она возвращает QMdiSubWindow *. А мне необходимо далее использовать методы класса который я вставил методом addSubWindow() . Я могу также сделать currentSubWindow()->widget()->а далее мой метод,но только это не возможно поскольку возвращает он QWidget* а не указатель на мой порожденный от QWidget класс, потому я и перевожу) Исправил. В функции смена фокуса вставил такую строку:
Сообщение отредактировал breeve - 14.5.2010, 12:57 |
|
|
breeve |
14.5.2010, 12:54
Сообщение
#7
|
Участник Группа: Участник Сообщений: 188 Регистрация: 26.12.2009 Пользователь №: 1336 Спасибо сказали: 9 раз(а) Репутация: 1 |
Исправил я одну проблему осталась другая. Как мне отлавливать смену фокуса на любое другое приложение? Программа падает если я нажимаю куда угодно только не на нее.
|
|
|
grio |
18.5.2010, 17:33
Сообщение
#8
|
Студент Группа: Участник Сообщений: 87 Регистрация: 11.11.2009 Пользователь №: 1221 Спасибо сказали: 6 раз(а) Репутация: 0 |
Исправил я одну проблему осталась другая. Как мне отлавливать смену фокуса на любое другое приложение? Программа падает если я нажимаю куда угодно только не на нее. Ящитаю, твой код надо пересмотреть в сторону использования механизма сигналов и слотов для взаимодействия потомков. |
|
|
Текстовая версия | Сейчас: 26.11.2024, 0:50 |