Size: a a a

2020 May 21

МВ

Макс Воробьев... in Qt
sleep не нужен
источник

МВ

Макс Воробьев... in Qt
тебе нужно крутить  proc ev в цикле
источник

МВ

Макс Воробьев... in Qt
пока не завершится твоя задача
источник

JN

Joy Narical in Qt
Anatoly Shirokov
Сможешь, но это для бедных, хорошая практика не лочить главный уи поток.
Сейчас ситуация такая, что надо переделать на Qt::ConcurrentRun, но т.к. это не самое важное что требует внимания - то переделывать пока не хочется. Но есть откровенная проблема - с точки зрения пользователя неочевидно что прога начинает долгий обмен с базой, надо как-то уведомить. В качестве временного решения сгодится просто окошко. А оно блин не рисуется!
источник

JN

Joy Narical in Qt
Макс Воробьев
sleep не нужен
sleep имитирует долгую задачу в данном контексте
источник

AS

Anatoly Shirokov in Qt
Joy Narical
Сейчас ситуация такая, что надо переделать на Qt::ConcurrentRun, но т.к. это не самое важное что требует внимания - то переделывать пока не хочется. Но есть откровенная проблема - с точки зрения пользователя неочевидно что прога начинает долгий обмен с базой, надо как-то уведомить. В качестве временного решения сгодится просто окошко. А оно блин не рисуется!
Ты перекрыл артерию (цикл обработки сообщений), поэтому в процесса надо переодически давать ей обработать очередь через processEvents
источник

JN

Joy Narical in Qt
Anatoly Shirokov
Ты перекрыл артерию (цикл обработки сообщений), поэтому в процесса надо переодически давать ей обработать очередь через processEvents
из-за qthread sleep?
источник

AS

Anatoly Shirokov in Qt
Joy Narical
из-за qthread sleep?
Ну да
источник

AS

Anatoly Shirokov in Qt
Или своим долгим процессом записи в бд
источник

BN

Bahman Nurnazarov in Qt
Joy Narical
как сделать, чтоб Qt таки отрисовал (неблокирующее) окошко перед тем, как продолжить делать дела?
Просто свои дела закидываешь в слот и вызываешь их через qtimer::singleshot после box.show()
источник

ПК

Побитый Кирпич... in Qt
Т-34 85
а с async/await c++20 будет работать?
Вряд ли. Этож Qt. Скажут, что "никто не мог подумать, что корутины будут new meta, наш дизайн их не поддерживает" 😃
источник

ПК

Побитый Кирпич... in Qt
Хотя вроде корутины можно запилить, если в event loop внедриться и там resume-ить корутины.
источник

AS

Anatoly Shirokov in Qt
Anatoly Shirokov
Или своим долгим процессом записи в бд
Другой вопрос, сможешь ли ты таким образом разделить процесса записи в БД, чтобы уи не фризился, вопрос
источник

AS

Anatoly Shirokov in Qt
Bahman Nurnazarov
Просто свои дела закидываешь в слот и вызываешь их через qtimer::singleshot после box.show()
Не спасет
источник

BN

Bahman Nurnazarov in Qt
Как так то. Сначала обработается show. Затем слот. Он же сказал. Ему не нужно чтобы в окне что то крутился
источник

JN

Joy Narical in Qt
Anatoly Shirokov
Другой вопрос, сможешь ли ты таким образом разделить процесса записи в БД, чтобы уи не фризился, вопрос
Да пускай фризится. Это не критично, речь идет об очень редких операциях
источник

JN

Joy Narical in Qt
Вообще получилось, хотя период когда окошко черное - достаточно заметен
источник

JN

Joy Narical in Qt
@anatolijs опять меня спасаешь, спасибо! )
источник

AS

Anatoly Shirokov in Qt
Bahman Nurnazarov
Как так то. Сначала обработается show. Затем слот. Он же сказал. Ему не нужно чтобы в окне что то крутился
Если не надо, то тогда уи вообще станет колом без processEvents, отрисуется и зафризится
источник

AS

Anatoly Shirokov in Qt
Joy Narical
@anatolijs опять меня спасаешь, спасибо! )
Так тебе Макс все сообщил выше
источник