Size: a a a

2020 January 31

M

Mr.Mait in Qt
Такая вот гибкость в обход сигналов и слотов
источник

X

Xio in Qt
Mr.Mait
Контекс в главном потоке. Вызов любого метода через invokeMethod будет выполняться в главном потоке
Спасибо, помогло) Но на сигнале connect(wep, &QWebEnginePage::loadFinished, event, &QEventLoop::quit) вылетает
источник

SE

Suigintou45 E13 in Qt
Xio
Спасибо, помогло) Но на сигнале connect(wep, &QWebEnginePage::loadFinished, event, &QEventLoop::quit) вылетает
а откуда event?
источник

X

Xio in Qt
Suigintou45 E13
[=] - не надо так делать)
this вместо = ?
источник

PM

Peter Mironychev in Qt
То что тебе надо то и захватываешь
источник

X

Xio in Qt
Suigintou45 E13
а откуда event?
Жду пока отработает лоад, с помощью event->exec()
источник

SE

Suigintou45 E13 in Qt
Xio
this вместо = ?
только то, что нужно внутри. часто это тот объект, что и был указан как context и + чтонить ещё локальное
источник

SE

Suigintou45 E13 in Qt
Xio
Жду пока отработает лоад, с помощью event->exec()
вебенжин и эвентлуп треда в разных потоках, наверное. надо 5м параметром Qt::QueuedConnection ещё
источник

SE

Suigintou45 E13 in Qt
а отдельный тред там с moveToThread или через QThread::run сделан?
источник

X

Xio in Qt
Suigintou45 E13
а отдельный тред там с moveToThread или через QThread::run сделан?
2 вариант, после подсказки понял в чем дело, объкт event за пределами invokeMethod создавался
источник

SE

Suigintou45 E13 in Qt
а зачем евентлуп в invokeMethod создавать?)
источник

X

Xio in Qt
Suigintou45 E13
а зачем евентлуп в invokeMethod создавать?)
Чтобы дождаться завершения работы метода load
источник

X

Xio in Qt
Если я создал wep = new QWebEnginePage, потом написал: QMetaObject::invokeMethod(wep, [=](){

my code

   }, Qt::QueuedConnection);

delete wep;
, то вылетает на delete, так нельзя?
источник

M

Mr.Mait in Qt
Xio
Если я создал wep = new QWebEnginePage, потом написал: QMetaObject::invokeMethod(wep, [=](){

my code

   }, Qt::QueuedConnection);

delete wep;
, то вылетает на delete, так нельзя?
Нет, ибо invoke не сразу вызывает а отправляет событие
источник

X

Xio in Qt
я же new делаю не в главном потоке и delete в том же
источник

M

Mr.Mait in Qt
wep->deleteLater();
источник

SE

Suigintou45 E13 in Qt
Xio
Чтобы дождаться завершения работы метода load
кстате, замечал на тяжелых скриптованных сайтах со всякими styled-components и сплошным веб-дваноль иногда loadFinished не приходит вообще
источник

X

Xio in Qt
Suigintou45 E13
кстате, замечал на тяжелых скриптованных сайтах со всякими styled-components и сплошным веб-дваноль иногда loadFinished не приходит вообще
Это важная инфа, на будушее пригодятся, а то тупил бы я в такой ситуации, спасибо)
источник

AT

Anatoly Tomilov in Qt
Mr.Mait
Пример
#include <QApplication>

void funcTest()
{
   qDebug() << "in gui thread: " << QThread::currentThread();
}

int main(int argc, char *argv[])
{
   QApplication a(argc, argv);

   QObject *context = new QObject;

   QtConcurrent::run([=]{
       qDebug() << "In another thread: " << QThread::currentThread();
       QMetaObject::invokeMethod(context, [=](){
           funcTest();
           }, Qt::QueuedConnection);
   });

   return a.exec();
}
аа. Лямбда может быть. Не знал, что такая перегрузка есть
источник

M

Mr.Mait in Qt
Suigintou45 E13
кстате, замечал на тяжелых скриптованных сайтах со всякими styled-components и сплошным веб-дваноль иногда loadFinished не приходит вообще
Даже этот сигнал не возвращает false ?
источник