Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > Вопрос по Сигналам и Слотам.


Автор: andrew_121 8.5.2009, 12:58
В документации говорится. Что слоты соединеные с одним сигналом, при его испускании, выполняются в произвольном порядке. Так ли это? И как можно заставить их выполняться в том порядке, в котором они были подключены. К примеру как в Boost.signals.

Автор: SABROG 8.5.2009, 14:15
На самом деле это предупреждение на будущее. Нет никакого рандома, но это не означает, что разработчики потом не внесут каких-нибудь изменений, которые могли бы сортировать очередь вызовов для оптимизации скорости выполнения. Поэтому есть такое решение:

Код

class X : public QObject
{
  Q_OBJECT
  ....  
signals:
       void fooPriority1();
       void fooPriority2();
       void fooPriority3();
       void fooPriority4();

slots:
       void emitFoo();
...
};

void emitFoo()
{
     emit fooPriority1();
     emit fooPriority2();
     emit fooPriority3();
     emit fooPriority4();
}



Т.е. вместо того, чтобы подключать сигнал к нескольким слотам - подключаем к одному, который выпускает в нужной последовательности остальные сигналы, а они уже должны быть соединены к нужным слотам.

Автор: andrew_121 8.5.2009, 15:03
Цитата(SABROG @  8.5.2009,  14:15 Найти цитируемый пост)
Т.е. вместо того, чтобы подключать сигнал к нескольким слотам - подключаем к одному, который выпускает в нужной последовательности остальные сигналы, а они уже должны быть соединены к нужным слотам.

Это понятно.
Но...
Ладно.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)