Получить указатель на главное окно |
Здравствуйте, гость ( Вход | Регистрация )
Получить указатель на главное окно |
softminister |
28.4.2021, 9:02
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 2 Регистрация: 28.4.2021 Пользователь №: 5261 Спасибо сказали: 0 раз(а) Репутация: 0 |
Qt только осваиваю, поэтому возникают такие вопросы.
Есть приложение на основе QDialog. Главное окно создает дочернее окно на основе QDialog. Как из дочернего окна получить доступ к public-методам главного окна? На просторах сети нашел метод получения указателя на главное окно:
Но видимо этот способ недостаточно безопасный, т.к. в половине случаев программа вылетает без объяснения каких-либо причин из-за этого, потому что оказывается nw=0. Видимо вылетает исключение. Поэтому такой способ не подходит. Кстати, почему вылетает? Объясните, как правильно поступить в такой простейшей ситуации? Как обращаться к функциям главного окна из дочерних окон? |
|
|
Алексей1153 |
28.4.2021, 15:40
Сообщение
#2
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
Как обращаться к функциям главного окна из дочерних окон передай указатель на главное окно в диалог через его (диалога) конструктор вылетает без объяснения каких-либо причин из-за этого, потому что оказывается nw=0. а проверить на nullptr нельзя что ли ? )) Кроме того, где проверка того, что QApplication::topLevelWidgets() вернул не пустой список ? Кстати, почему вылетает? разыменование нулевого указателя потому что Сообщение отредактировал Алексей1153 - 28.4.2021, 15:41 |
|
|
Litkevich Yuriy |
4.8.2021, 7:05
Сообщение
#3
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Как обращаться к функциям главного окна из дочерних окон? В общем случае это плохая идея, работающая задом на перёд.При необходимости двусторонней связи окон с такой иерархией, стоит сделать сигналы и слоты у обоих окон, в главном окне (после создания дочернего) связать их сигналы и слоты, затем отобразить дочернее. |
|
|
Текстовая версия | Сейчас: 22.11.2024, 14:03 |