|
111 / 98 / 84
Регистрация: 18.12.2015
Сообщений: 567
|
|||||||||||
QDialog вызов функции после exec()05.10.2017, 10:59. Показов 8167. Ответов 33
Метки нет (Все метки)
Всем привет! Мне надо после того как окно диалога появилось вызвать код. А конкретно запустить поток.
Используя перегрузку exec() код вызывается до вызова функции exec(). Используя перегрузку showEvent() тот же эффект.
Если вызывать код после вызова
accepted() rejected() Кнопки OK или CANCEL
0
|
|||||||||||
| 05.10.2017, 10:59 | |
|
Ответы с готовыми решениями:
33
QDialog, QApplication и exec() QDialog setVisible прерывает exec? |
|
111 / 98 / 84
Регистрация: 18.12.2015
Сообщений: 567
|
|||||||||||
| 05.10.2017, 21:37 [ТС] | |||||||||||
|
Вот делаю как рекомендуют колеги, но те же ошибки:
0
|
|||||||||||
|
|
|
| 05.10.2017, 21:50 | |
|
Вынеси всё это дерьмо из класса диалога в класс, где этот диалог создаётся. Что за чудачество, писать логику в UI?!? Создаёшь диалог, запускаешь поток, выполняешь exec, всё в одном месте. Можешь даже через сигналы-слоты это всё выполнять, цепляешь exec к started, finished к close.
Worker - это виджет QToolButton? Виджеты вне основного потока не работают, даже не понятно, почему Qt на перемещении не упало. Ради них, виджетов, вообще все эти сигналы и делались, чтобы ui не расплывалось сообщениями по потокам. Поверь, ты не захочешь 4 очереди сообщений, сражающихся за сообщения о положении курсора.
0
|
|
|
111 / 98 / 84
Регистрация: 18.12.2015
Сообщений: 567
|
|||||||||||
| 06.10.2017, 11:06 [ТС] | |||||||||||
|
Можешь показать на примере, как это сделать на моем примере.
Добавлено через 9 минут Я попробовал как вы сказали и все те же ошибки
Все крушится. Добавлено через 2 минуты Когда сделать вот так, то окно показывается, но замерает и когда я нажимаю выйти все крушится
Как можно это исправить?
0
|
|||||||||||
|
|
|||||||||
| 06.10.2017, 11:36 | |||||||||
ProcessFormThread и ProcessFormWorker.
1
|
|||||||||
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
||||
| 06.10.2017, 11:43 | ||||
|
0
|
||||
|
111 / 98 / 84
Регистрация: 18.12.2015
Сообщений: 567
|
|||||||||||||||||||||
| 06.10.2017, 12:00 [ТС] | |||||||||||||||||||||
Тоесть Worker мы помещаем в поток, который запускает цикл обработки событий. Добавлено через 2 минуты Вот так попробовал, но ошибка та же
Как и раньше обговаривали
0
|
|||||||||||||||||||||
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
|
| 06.10.2017, 12:11 | |
|
Kotik_leapold, временно отключи prepareQrCodeSession(numberUsers) и saveFormsSession(). Посмотри, останется ли вылет. Потом добавь их по одному.
0
|
|
|
111 / 98 / 84
Регистрация: 18.12.2015
Сообщений: 567
|
||||||||||||||||
| 06.10.2017, 12:38 [ТС] | ||||||||||||||||
|
Окей! Сейчас проверю!
Добавлено через 7 минут Окно показывается. Но обработка не выполняется. Это понятно
Сигнал не вызывается. Но когда я хочу закрыть диалог, то В логе вот таке показывается
0
|
||||||||||||||||
|
111 / 98 / 84
Регистрация: 18.12.2015
Сообщений: 567
|
|
| 06.10.2017, 12:39 [ТС] | |
|
Вот так
0
|
|
|
111 / 98 / 84
Регистрация: 18.12.2015
Сообщений: 567
|
|
| 06.10.2017, 13:09 [ТС] | |
|
После закрытия окна все ламается.
Добавлено через 28 минут Как можно это исправить.
0
|
|
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
|||||||
| 06.10.2017, 13:36 | |||||||
1
|
|||||||
|
111 / 98 / 84
Регистрация: 18.12.2015
Сообщений: 567
|
||||||
| 06.10.2017, 14:09 [ТС] | ||||||
|
Если добавить, две строки и закоментировать то программа не падает
но строчка все равно показывается.
0
|
||||||
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
|
| 06.10.2017, 14:48 | |
|
0
|
|
|
111 / 98 / 84
Регистрация: 18.12.2015
Сообщений: 567
|
|
| 06.10.2017, 15:01 [ТС] | |
|
Надо удалить в ProcessFormDialog.
Это поможет? Хорошо попробую и очищу.
0
|
|
| 06.10.2017, 15:01 | |
|
Вызов функции из другой функции после нажатия на кнопку Вызов функции после некоторого времени Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки
Правым кликом по серверу -> отладочная информация -> edit
Заменить "net": "raw", на "net": "tcp",
Нажать кнопку reload.
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|