crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Получить указатель на главное окно
softminister
  опции профиля:
сообщение 28.4.2021, 9:02
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 2
Регистрация: 28.4.2021
Пользователь №: 5261

Спасибо сказали: 0 раз(а)




Репутация:   0  


Qt только осваиваю, поэтому возникают такие вопросы.

Есть приложение на основе QDialog. Главное окно создает дочернее окно на основе QDialog.

Как из дочернего окна получить доступ к public-методам главного окна?

На просторах сети нашел метод получения указателя на главное окно:

MainDialog *nw = qobject_cast<MainDialog*>( QApplication::topLevelWidgets()[ 0 ] );


Но видимо этот способ недостаточно безопасный, т.к. в половине случаев программа вылетает без объяснения каких-либо причин из-за этого, потому что оказывается nw=0. Видимо вылетает исключение. Поэтому такой способ не подходит. Кстати, почему вылетает?

Объясните, как правильно поступить в такой простейшей ситуации? Как обращаться к функциям главного окна из дочерних окон?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Алексей1153
  опции профиля:
сообщение 28.4.2021, 15:40
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


Цитата(softminister @ 28.4.2021, 11:02) *
Как обращаться к функциям главного окна из дочерних окон

передай указатель на главное окно в диалог через его (диалога) конструктор




Цитата(softminister @ 28.4.2021, 11:02) *
вылетает без объяснения каких-либо причин из-за этого, потому что оказывается nw=0.

а проверить на nullptr нельзя что ли ? )) Кроме того, где проверка того, что QApplication::topLevelWidgets() вернул не пустой список ?

Цитата(softminister @ 28.4.2021, 11:02) *
Кстати, почему вылетает?

разыменование нулевого указателя потому что

Сообщение отредактировал Алексей1153 - 28.4.2021, 15:41
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 22.11.2024, 21:03