Что делает QTimer::singleShot(0, object, SLOT(obj_slot()))?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Что делает QTimer::singleShot(0, object, SLOT(obj_slot()))?

Сообщение Anonymous »

Я новичок в изучении Qt и пытаюсь понять предоставленный Qt пример операции загрузки. В downloadmanager.cpp функция-член имеет следующий вид:

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

void DownloadManager::append(const QUrl &url)
{
if (downloadQueue.isEmpty())
QTimer::singleShot(0, this, SLOT(startNextDownload()));

downloadQueue.enqueue(url);
++totalCount;
}
  • Я не понимаю, почему, если downloadQueue пуст, перед добавлением необходимо активировать startNextDownload() URL. (обратите внимание: startNextDownload() завершает программу, если очередь загрузки пуста)
  • Я не уверен, почему: QTimer: :singleShot(x, y, z) вообще использовался. Насколько я понимаю, это таймер, который активирует слот с задержкой в ​​0 миллисекунд.
  • Посмотрев на Qt Assistant, я не смог понять, является ли singleShot однократной настройкой для повторной активации в слот с заданным интервалом в миллисекундах или один раз
Уточнение:
Я новичок и в таких примерах:

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

statement1;
statement2;
Я привык видеть, как оператор 1 выполняется и завершается, прежде чем переходить к работе над оператором 2. Но пытаясь изучить Qt и читая данный пример, я вижу, что SLOT(startNextDownload()) активируется после того, как произошла загрузкаQueue.enqueue(url);. Я пытаюсь понять, почему это работает.

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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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