Size: a a a

2021 January 06

EP

Egor Pugin in Qt
они могут перерисовать фикс, и потом поди докажи, что это не сами исправили
источник

R

Roman in Qt
Всем привет.
Кто-нибудь работал с QThread ? В документации пишут, что в run() можно использовать любые классы, кроме виджетов, однако на форумах пишут, что вообще не желательно что-либо туда помещать.
источник

SE

Suigintou45 E14 in Qt
Roman
Всем привет.
Кто-нибудь работал с QThread ? В документации пишут, что в run() можно использовать любые классы, кроме виджетов, однако на форумах пишут, что вообще не желательно что-либо туда помещать.
Виджеты живут в gui-потоке, и их можно трогать через event-loop этого потока.
источник

SE

Suigintou45 E14 in Qt
Про непомещение чего-либо в QThread::run и использование умолчального эвентлупа - см. чуть выше в чате, а также классику: https://www.qt.io/blog/2010/06/17/youre-doing-it-wrong
источник

SK

Stas Koynov in Qt
Roman
Всем привет.
Кто-нибудь работал с QThread ? В документации пишут, что в run() можно использовать любые классы, кроме виджетов, однако на форумах пишут, что вообще не желательно что-либо туда помещать.
Это ООП оболчка над потоком. Все что ты раньше делал в потоке через АПИ ОСи. pthread там или еще чего. то же самое ты делаешь тут. run это то что будет запущено в потоке!. сейчас там по умолчанию стартует exec - обработчик сигнал-слотов обьектов которые привязаны к этому Потоку. никакой магии нету. мы всего лишь в матрице!
источник

R

Roman in Qt
Вот, даже челик в комменте правильно подметил, в документации написано одна, а реальное корректное применение - другое
источник

SK

Stas Koynov in Qt
Roman
Вот, даже челик в комменте правильно подметил, в документации написано одна, а реальное корректное применение - другое
корректного или приемлемого применения - это все слова! Попытка пустить пыль в глаза. Есть код и он может работать или нет все точка. После того как он работает и выполняет задачу мы можем задаться вопросом: можно ли сделать это лучше, правильнее (опять правильнее для кого? для нас, для команды, подвести под общее среднее мнение и т.п), быстрее... и т.п. Вот тут для QThread мы имеем два варианта:
1. использовать его как ООП оболочку над потоками ОСи. мы берем и наследуемся и переопределяем run.
2. Мы все делаем через сигнал слот и т.п для этого в run должен быть запущен exec. А КОбжекты должны быть созданы внутри потока (внутри функции run) либо перемещены в этот поток, чтобы их слоты обрабатывались в этом потоке. внутри exec
источник

W

WhoAmI? in Qt
Всем привет.
Люди добрые, объясните, пожалуйста, как правильно, зачем и когда нужно использовать deleteLater()?
Спасибо огромное!
В интрунете никто нормально не ответил..
источник

m

mefest in Qt
WhoAmI?
Всем привет.
Люди добрые, объясните, пожалуйста, как правильно, зачем и когда нужно использовать deleteLater()?
Спасибо огромное!
В интрунете никто нормально не ответил..
когда нужно отложить удаление
например в слоте этого объекта.
источник

W

WhoAmI? in Qt
mefest
когда нужно отложить удаление
например в слоте этого объекта.
А поподробнее?
источник

m

mefest in Qt
WhoAmI?
А поподробнее?
c QNetworkAccessManager знаком?
источник

W

WhoAmI? in Qt
mefest
c QNetworkAccessManager знаком?
Нет, встретился с deleteLater при работе с потоками
источник

m

mefest in Qt
WhoAmI?
А поподробнее?
deleteLater помещает в очередь задачу удалить этот объект.
и он удалится когда эта задача обработается.
если у тебя в eventLoop задачи которые необходимо выполнить с каким то объектом, то удалив объект через delete эти задачи не выполнятся. deleteLater поможет тут безопасно удалить объект
источник

W

WhoAmI? in Qt
mefest
deleteLater помещает в очередь задачу удалить этот объект.
и он удалится когда эта задача обработается.
если у тебя в eventLoop задачи которые необходимо выполнить с каким то объектом, то удалив объект через delete эти задачи не выполнятся. deleteLater поможет тут безопасно удалить объект
Спасибо!👍👍
источник

R

Roman in Qt
Stas Koynov
корректного или приемлемого применения - это все слова! Попытка пустить пыль в глаза. Есть код и он может работать или нет все точка. После того как он работает и выполняет задачу мы можем задаться вопросом: можно ли сделать это лучше, правильнее (опять правильнее для кого? для нас, для команды, подвести под общее среднее мнение и т.п), быстрее... и т.п. Вот тут для QThread мы имеем два варианта:
1. использовать его как ООП оболочку над потоками ОСи. мы берем и наследуемся и переопределяем run.
2. Мы все делаем через сигнал слот и т.п для этого в run должен быть запущен exec. А КОбжекты должны быть созданы внутри потока (внутри функции run) либо перемещены в этот поток, чтобы их слоты обрабатывались в этом потоке. внутри exec
" Однако следует отметить, что невозможно использовать в потоке любые классы виджетов. " - сказано в Documents QThread
источник

SK

Stas Koynov in Qt
Roman
" Однако следует отметить, что невозможно использовать в потоке любые классы виджетов. " - сказано в Documents QThread
Виджеты это часть ГУИ. вся ГУЯ вся прям до кишков. Обрабатывается в главном потоке. ты когда сделал в мэйне application->exec() у тебя мэйн стал обрабатывать главный цикл обработки сообщений, сигналов слотов. и т.п. и стал взаимодействовать с ОСю. По этому, любая часть ГУИ, а виджет это его часть, должна жить и трудиться в главном потоке!
источник

AU

Abu Umar in Qt
Roman
Вот, даже челик в комменте правильно подметил, в документации написано одна, а реальное корректное применение - другое
Вы внимательно посмотрите на дату, с тех пор документация изменилась и пример с наследованием от QThread стал вторым в документации после рекомендуемого использования
источник

A

Alex in Qt
QDir::mkpath возвращает false на macOS, можно как-то узнать код или суть возникшей ошибки?
источник

JS

Jerzy Syrowiecki in Qt
Alex
QDir::mkpath возвращает false на macOS, можно как-то узнать код или суть возникшей ошибки?
13 лет этому багу https://bugreports.qt.io/browse/QTBUG-1483
источник

A

Alex in Qt
Мда, ясно. Это многое говорит о Qt...
источник