Size: a a a

2020 June 23

SH

Stas Hehera in Qt
ну типа есть АПИ
источник

SH

Stas Hehera in Qt
и там проводиться сканирование, и в качестве получения результата нужно дать колбек
источник

SH

Stas Hehera in Qt
а как привязать тогда к гуи
источник

M

Mr.Mait in Qt
Чем сигнал слот плохи? Почему именно колбек?
источник

A

Alexander in Qt
Stas Hehera
можете подробней? я не очень сильно умею работать с потоками
я сам в интернет подглядываю. Суть в том, что надо вызвать функцию в потоке объекта, на stackoverflow наверное сразу будет
источник

SH

Stas Hehera in Qt
Mr.Mait
Чем сигнал слот плохи? Почему именно колбек?
потому что автор АПИ хочет чтобы сканирование было на его стороне, типа цикл выполнения и при каждой итерации он хочет вызывать полученный колбек, в этом и проблема. если бы можно было после колбека как то послать сигнал, но нет статические функции не могут использоваться для сигналов
источник

SH

Stas Hehera in Qt
или есть способ как-то из колбека послать сигнал?
источник

M

Mr.Mait in Qt
Stas Hehera
или есть способ как-то из колбека послать сигнал?
Сделать слот и колбек. Из колбека будет посылаться сигнал, слот будет запускаться в нужном потоке . Главное соединение сигнала и слота делай с Qt::QueuedConnection
источник

SH

Stas Hehera in Qt
Mr.Mait
Сделать слот и колбек. Из колбека будет посылаться сигнал, слот будет запускаться в нужном потоке . Главное соединение сигнала и слота делай с Qt::QueuedConnection
так колбек не статическая функция?
источник

SH

Stas Hehera in Qt
Mr.Mait
Сделать слот и колбек. Из колбека будет посылаться сигнал, слот будет запускаться в нужном потоке . Главное соединение сигнала и слота делай с Qt::QueuedConnection
а из статической функции послать сигнал нерзя
источник

SH

Stas Hehera in Qt
если кому интересно, нашёл некое решение
https://stackoverflow.com/questions/41771848/qt-emit-signal-from-callback
источник

SE

Suigintou45 E14 in Qt
Stas Hehera
а из статической функции послать сигнал нерзя
можно вызвать слот через QMetaObject::invokeMethod. в контексте gui-потока, с QueuedConnection
источник

M

Mr.Mait in Qt
Suigintou45 E14
можно вызвать слот через QMetaObject::invokeMethod. в контексте gui-потока, с QueuedConnection
Тогда ему надо где-то статично хранить указатель на контекст gui потока или делать шаблон одиночки и получать инстанс в статичной функции...
источник

Eあ

Elnee あめ in Qt
Как решить проблему ассоциации каких-то данных с запросом? Я например делаю get запрос через QNetworkAccessManager и с сигналом finished получаю объект QNetworkReply с ответом. Но что если я хочу также узнать что пришёл ответ именно на тот запрос, который я отправлял? Связать с какими-то метаданными. Мне например нужно связать число некоторое с этим запросом.
источник

SE

Suigintou45 E14 in Qt
Elnee あめ
Как решить проблему ассоциации каких-то данных с запросом? Я например делаю get запрос через QNetworkAccessManager и с сигналом finished получаю объект QNetworkReply с ответом. Но что если я хочу также узнать что пришёл ответ именно на тот запрос, который я отправлял? Связать с какими-то метаданными. Мне например нужно связать число некоторое с этим запросом.
можно в finished указывать лямбду. и захватить в неё дополнительные данные
источник

M

Mr.Mait in Qt
Elnee あめ
Как решить проблему ассоциации каких-то данных с запросом? Я например делаю get запрос через QNetworkAccessManager и с сигналом finished получаю объект QNetworkReply с ответом. Но что если я хочу также узнать что пришёл ответ именно на тот запрос, который я отправлял? Связать с какими-то метаданными. Мне например нужно связать число некоторое с этим запросом.
Оно? QNetworkRequest QNetworkReply::request () const
https://doc.qt.io/qt-5/qnetworkreply.html#request
источник

Eあ

Elnee あめ in Qt
Mr.Mait
Оно? QNetworkRequest QNetworkReply::request () const
https://doc.qt.io/qt-5/qnetworkreply.html#request
Так я получу только один request. А мне его самого мало. Или закинуть его в мап чтобы получать нужные значения?
источник

Eあ

Elnee あめ in Qt
Suigintou45 E14
можно в finished указывать лямбду. и захватить в неё дополнительные данные
А как потом этот конекшн убрать? У меня же при каждом вызове они будут создаваться с этими лямбдами. Не будет проблем?
источник

SE

Suigintou45 E14 in Qt
Elnee あめ
А как потом этот конекшн убрать? У меня же при каждом вызове они будут создаваться с этими лямбдами. Не будет проблем?
при выходе из лямбды удалишь QNetworkReply с deleteLater (как и в обычном слоте). и коннект удалится тоже
источник

M

Mr.Mait in Qt
Elnee あめ
Так я получу только один request. А мне его самого мало. Или закинуть его в мап чтобы получать нужные значения?
Ты можешь оттуда вытащить url запроса
источник