Что произойдет, если QQuickImageResponse выдаст готовый сигнал слишком рано?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Что произойдет, если QQuickImageResponse выдаст готовый сигнал слишком рано?

Сообщение Anonymous »

В Qt6 Quick использование QQuickAsyncImageProvider является рекомендуемым способом поддержки многопоточной асинхронной загрузки изображений, которая включает в себя реализацию метода requestImageResponse для возврата QQuickImageResponse* в механизм QML. Ответ должен выдавать сигнал завершения, когда задание выполнено (успешно или нет).
В примере, предоставленном Qt doc, подкласс ответа изображения , во время построения создает задачу QRunnable (которая также является QObject), подключает пользовательский сигнал Done задачи к ее пользовательскому слоту handleDone (который будет выдавать Finished< /code>) и, наконец, передает задачу в QThreadPool для выполнения.
Мой вопрос: возможно ли, что ответ очень быстро завершит свою работу быстро, и сигнал завершения генерируется до того, как метод requestImageResponse вернет указатель? Как гарантируется, что движок сможет перехватить и обработать все готовые сигналы?
......Если подумать, возможно, это механизм цикла событий qt, который гарантирует это:

Код: Выделить всё

{
// this may be how the engine uses the provider
auto response = provider->requestImageResonse(...);
// suppose now the runnable has done the job and emits "done"
// but the signal is just queued up to the current event-loop
// and the "handleDone" slot would not get executed
// until the event-loop finishes handling this piece of code
QObject::connect(r, &QQuickImageResponse::finished, ...);
// now the response is well-connected to the engine
}
// finally the event-loop can execute the "handleDone" slot of the response
{
......
// in the image response subclass
// void handleDone(QImage image)
{
this->image = image;
emit finished();
// the signal is guaranted to be caught by the engine
}
}
Моя догадка верна?

Подробнее здесь: https://stackoverflow.com/questions/782 ... -too-early
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Готовый сигнал Godot 4.2 C# не выдается на загруженной упакованной сцене
    Anonymous » » в форуме C#
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Относительно проблемы QThread, выдающей готовый сигнал
    Anonymous » » в форуме C++
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Относительно проблемы QThread, выдающей готовый сигнал
    Anonymous » » в форуме C++
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Почему мой инструмент выбора даты Bootstrap дублируется, если он открыт слишком рано?
    Anonymous » » в форуме Jquery
    0 Ответы
    38 Просмотры
    Последнее сообщение Anonymous
  • Функция в .bind('', function) Tkinter вызывается слишком рано [дубликат]
    Anonymous » » в форуме Python
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»