Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
C++ Qt как проверить, создан виджет или нет ?
|
|||
|---|---|---|---|
|
#18+
Вроде бы всё просто QWidget *w; В какой-то момент являем виджет на свет w->show(); В какой-то момент убиваем w->close(); При этом, в приложении есть необходимость, при определенных действиях проверить, каково сейчас состояние это виджета. Делаю так if (w!=NULL){ Что-то тут делаем } Пробовал и так if (w!=0){ Что-то тут делаем } Под MAC OS всё нормально работает. Под Windows крашится приложение. Просто напросто проверка на существование if (w!=0) не проходит и выполняется код из "Что-то тут делаем" над несуществующим объектам. Как это решается ? Пишу как умею. Дорого, долго... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2017, 12:14 |
|
||
|
C++ Qt как проверить, создан виджет или нет ?
|
|||
|---|---|---|---|
|
#18+
Немного не до конца код привел... когда являем на свет w=new QWidget(this); w->show(); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2017, 12:15 |
|
||
|
C++ Qt как проверить, создан виджет или нет ?
|
|||
|---|---|---|---|
|
#18+
olegov, читаем учебники по с++ а) по Qt б) про жизненный цикл объектов. Указатели сами по себе не обнуляются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2017, 12:19 |
|
||
|
C++ Qt как проверить, создан виджет или нет ?
|
|||
|---|---|---|---|
|
#18+
olegov, 1. Использовать сырые указатели -- плохая практика. 2. Используй QPointer<QWidget> w. Если у виджета выставлен флаг Qt::WA_DeleteOnClose, тогда после вызовые w->close(), w.isNull() должен вернуть true. Пример: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2017, 12:32 |
|
||
|
C++ Qt как проверить, создан виджет или нет ?
|
|||
|---|---|---|---|
|
#18+
olegovВ какой-то момент убиваем w->close();1. QWidget::close прибивает объект, только если у него выставлен флаг Qt::WA_DeleteOnClose 2. QWidget::close возвращает результат типа bool 3. Под MAC OS "всё работает" в релизной сборке? Боюсь, тут могут ждать неожиданности ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2017, 12:33 |
|
||
|
C++ Qt как проверить, создан виджет или нет ?
|
|||
|---|---|---|---|
|
#18+
Siemargl, спасибо ! Прям помогло. Одно не понятно, если нет желания отвечать, на кой вообще что-то писать ? Для галочки ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2017, 12:33 |
|
||
|
C++ Qt как проверить, создан виджет или нет ?
|
|||
|---|---|---|---|
|
#18+
olegovSiemargl, спасибо ! Прям помогло. Одно не понятно, если нет желания отвечать, на кой вообще что-то писать ? Для галочки ?С твоим уровнем понимания нет смысла давать готовый ответ. Потому что ты упадешь на следующем же шаге. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2017, 12:35 |
|
||
|
C++ Qt как проверить, создан виджет или нет ?
|
|||
|---|---|---|---|
|
#18+
NekZ, Ага, понял. Спасибо ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2017, 12:36 |
|
||
|
C++ Qt как проверить, создан виджет или нет ?
|
|||
|---|---|---|---|
|
#18+
egorych, Точно, так и получилось. В релизе и под Мак крашится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2017, 12:36 |
|
||
|
C++ Qt как проверить, создан виджет или нет ?
|
|||
|---|---|---|---|
|
#18+
olegov Под MAC OS всё нормально работает. Под Windows крашится приложение. Просто напросто проверка на существование if (w!=0) не проходит и выполняется код из "Что-то тут делаем" над несуществующим объектам. Как это решается ? Пишу как умею. Дорого, долго... Это другая проблема, никак не связанная с проверкой существования виджета. Само существование виджета у тебя проверяется правильно. Но у тебя в коде есть другая проблема, которая не проявляется на MAC OS, но вылезает на Win. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2017, 13:10 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=39400008&tid=2018284]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
180ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
| others: | 280ms |
| total: | 556ms |

| 0 / 0 |
