Size: a a a

2021 February 17

AS

Anatoly Shirokov in Qt
Sergey eSKon
если 100000 то ни то ни другое не делают по-хорошему, а выносят таки в поток
ну, я бы делал через QConcurrent::map, QFuture, QFutureWatcher, а в кнопке вызывал QFuture::cancel, но здесь было бы много переключений между потоками, поскольку ui модифицируется.
источник

AS

Anatoly Shirokov in Qt
а здесь остаемся в одном потоке и позволяем обработать событие
источник

S

Sergey eSKon in Qt
просто после таких советов смотришь код новичков и видишь этот processEvents натыканный во всех местах, потому-что "о боги, всего-то QCoreApplication::processEvents() добавить, это супер"
источник

AB

Alex B. in Qt
Renat Garaev
Ваш вопрос звучит так?
Пользователь решил собрать ваше приложение, у него светлая тема. Взял исходники. Собирает получил приложение всегда со светлой темой. Копирует ваше приложение в компьютер у кого темная тема, оно все равно работает со светлой темой.

Пользователь решил собрать ваше приложение, у него стоит темная тема. Взял ваши исходники. Собрал приложение. Запустил. У него темная тема. Передал приложение, тому, у кого стоит светлая тема. Это приложение так же работает в темной схеме

Оба написанных выше, абазца, да? Т.е. тема определяется один раз при сборке и потом всегда используется она, не зависимо от компьютера и пользователя и темы
Да нет же. Я собираю приложение, у пользователя 1. со светлой темой заголовок окна светлый, у пользователя 2 с темной темой заголовок окна темный. По умолчанию это не так, только если указать параметр при запуске приложения. То есть Qt умеет отслеживать тему, вопрос в том, как выставить этот параметр не в консоли при запуске, а изнутри приложения и желательно не прибегая к откровенным костылям, типа модификации argc-argv
источник

AS

Anatoly Shirokov in Qt
Sergey eSKon
просто после таких советов смотришь код новичков и видишь этот processEvents натыканный во всех местах, потому-что "о боги, всего-то QCoreApplication::processEvents() добавить, это супер"
повторю, в цикле он модифицирует ui, толку с того, что мы вынесем это в поток. ну получишь забивание очереди потока ui
источник

AS

Anatoly Shirokov in Qt
и то фигня и то
источник

RG

Renat Garaev in Qt
Alex B.
Да нет же. Я собираю приложение, у пользователя 1. со светлой темой заголовок окна светлый, у пользователя 2 с темной темой заголовок окна темный. По умолчанию это не так, только если указать параметр при запуске приложения. То есть Qt умеет отслеживать тему, вопрос в том, как выставить этот параметр не в консоли при запуске, а изнутри приложения и желательно не прибегая к откровенным костылям, типа модификации argc-argv
а почему вы говорите это определять при сборке приложения? Наверное корретный ваш вопрос: как при СТАРТЕ приложения определять мне световую схему пользователя и использовать ее?
источник

МВ

Макс Воробьев... in Qt
Anatoly Shirokov
ну вот смотри, 100000 итераций выполняются за 10 секунд, если бы мы не заморачивались с остановкой процесса. с какой частотой будем вызывать таймер и какую порцию обрабатывать?
почему условно не вынести 100000 итераций  в другой поток и из другого потока через каждые 1000 итераций слать сигнал с обновленными данными?
источник

AB

Alex B. in Qt
Renat Garaev
а почему вы говорите это определять при сборке приложения? Наверное корретный ваш вопрос: как при СТАРТЕ приложения определять мне световую схему пользователя и использовать ее?
Потому что вы не читаете что я написал. Мне нужно установить на момент компиляции параметр, который будет обрабатываться при старте. Тема определяется сама отлично, вы это можете проверить на любом 5.15 приложении в винде, которое использует системный заголовок окна
источник

AS

Anatoly Shirokov in Qt
Макс Воробьев
почему условно не вынести 100000 итераций  в другой поток и из другого потока через каждые 1000 итераций слать сигнал с обновленными данными?
можно
источник

AS

Anatoly Shirokov in Qt
но если эти 1000 будут выполняться 5 секунд что будем делать? :)
источник

S

Sergey eSKon in Qt
Макс Воробьев
почему условно не вынести 100000 итераций  в другой поток и из другого потока через каждые 1000 итераций слать сигнал с обновленными данными?
да, про это я и говорю - нужно думать в каждом конкретном случае, а не сразу забабахивать processEvents. Но Анатолий прав в том что иногда таки и goto лучший выбор
источник

RG

Renat Garaev in Qt
Alex B.
Повторюсь со своим вопросом. Может кто-то знает как На этапе компиляции активировать отслеживание изменения системной темы QT окном?
я прочитал внимательно ваш вопрос. и я понял его так

поставил темную схему. собрал приложение с темной схемой

поставил у себя светлую схему. собрал приложение с светлой схемой
источник

AS

Anatoly Shirokov in Qt
вообщем, полностью эта задача решена в RX, где по обратной связи можно регулировать нагрузку на заполнение очереди и пихать туда столько, сколько может обработать принимающая сторона для заданного интервала
источник

S

Sergey eSKon in Qt
RX это что?
источник

AS

Anatoly Shirokov in Qt
Reactive Extension
источник

МВ

Макс Воробьев... in Qt
Anatoly Shirokov
но если эти 1000 будут выполняться 5 секунд что будем делать? :)
1) примерно оценить, сколько итераций условно считается за 1/30 сек
2) добавить обработку отмены в итерациях
3) ждать
источник

RG

Renat Garaev in Qt
Anatoly Shirokov
вообщем, полностью эта задача решена в RX, где по обратной связи можно регулировать нагрузку на заполнение очереди и пихать туда столько, сколько может обработать принимающая сторона для заданного интервала
Т.е. а можно так измерить быстродействие QT? Сколько оно может прокачать через себя нагрузку?
источник

AB

Alex B. in Qt
Renat Garaev
я прочитал внимательно ваш вопрос. и я понял его так

поставил темную схему. собрал приложение с темной схемой

поставил у себя светлую схему. собрал приложение с светлой схемой
Ну значит вы поняли не правильно. Попробую еще раз. Мне надо на этапе компиляции получить app.exe ведущий себя так же как ведет себя сейчас app.exe -platform:darkmode=1. Соотвественно сообщить qtGuiApplication что нужно учитывать системную тему
источник

RG

Renat Garaev in Qt
Alex B.
Ну значит вы поняли не правильно. Попробую еще раз. Мне надо на этапе компиляции получить app.exe ведущий себя так же как ведет себя сейчас app.exe -platform:darkmode=1. Соотвественно сообщить qtGuiApplication что нужно учитывать системную тему
Ну тут скорее всего Win Api. Ищите примеры как определяется схема. Может быть это в реестре параметр. Его считывать и под него ставить светлую или темную схему
источник