crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Последовательный вызов слотов.
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
kwisp Дата 27.9.2009, 21:52
 
Цитата(Andrewshkovskii @ 25.9.2009, 21:22) *
И вопрос такой : если я к одному слоту привязываю несколько сигналов, можно ли добиться того, что бы они вызывались в порядке подключения через QObject::connect()?

понять не могу при чем тут порядок подключения.
он играет роль только при обратной ситуации которую и описали в документации.
здесь грает роль порядок вызова сигнала, я так думаю. какой сигнал первый вызван соответствующее соединения этого сигнала и сработает.
Litkevich Yuriy Дата 26.9.2009, 4:05
 
Цитата(Andrewshkovskii @ 26.9.2009, 0:22) *
И вопрос такой : если я к одному слоту привязываю несколько сигналов, можно ли добиться того, что бы они вызывались в порядке подключения через QObject::connect()?
Об обратной ситуации явно сказанао в документации:
Цитата
Если несколько слотов связаны с одним сигналом, то при испускании сигнала они будут выполнены один за другим в произвольном порядке.
И в твоём случае скорее всего также.
SABROG Дата 25.9.2009, 21:46
  Ты об этом? http://www.forum.crossplatform.ru/index.ph...ost&p=19452
ViGOur Дата 25.9.2009, 21:13
  Уже кто-то завадал подобный вопрос, и если мне не изменяет память, то пришли к тому, что если к одному слот привязано несколько сигналов, то порядок вызова не определен.
Andrewshkovskii Дата 25.9.2009, 20:22
  Ситуация такая : я сейчас отлаживаю приложения, и после каждого вызова своего метода(слота)/сигнала вывожу информацию кто его вызвал.
Примерно вот так
View::setDisableReadDataButton method called
View::setEnabledViewCountSpinBox method called
View::setEnabledViewColumnSpinBox method called
View::setViewCount method called
View::setViewCount method called
View::setViewContColumns method called
View::setViewContColumns method called
View::distanceMatrixModelSet signal emited
View::setDistanceMatrixModel method called
Model::distanceMatrixModelReady(QStandardItemModel*) signal emited
View::dataMatrixModelSet signal emited
View::setDataMatrixModel method called
Model::dataMatrixModelRead(QStandardItemModel*) signal emited
Model::setUpDataMatrixModel method called
Model::dataReaded() signal emited
View::setViewCount method called
View::distanceMatrixModelSet(int) signal emited
View::updateDistanceMatrixModel method called
Model::distanceMatrixCalculated(QStadardItemModel*) signal emited
Model::calculateNewDistanceMatrixModel method called
View::setParameterSwitcherBar method called
Model::dataReaded(QStringList*) signal emited
Model::readData method called


Выводиться оно стеком..да правда каким-то не понятным, по логике вещей кое-что не совпадает с порядком вызова.
И вопрос такой : если я к одному слоту привязываю несколько сигналов, можно ли добиться того, что бы они вызывались в порядке подключения через QObject::connect()?
Если надо, вот исходник контроллера, который все это дело соединяет :

=cpp
connect(model,SIGNAL(dataReaded(QStringList*)),view,SLOT(setParameterSwitcherBar(QStringList*)));
connect(view->readDataButton,SIGNAL(clicked()),model,SLOT(readData()));
connect(model,SIGNAL(dataReaded()),view,SLOT(setEnabledViewCountSpinBox()));
connect(model,SIGNAL(dataReaded()),view,SLOT(setEnabledViewColumnSpinBox()));
connect(view,SIGNAL(distanceMatrixModelSet(int)),view,SLOT(setViewCount(int)));
connect(view->viewCountColumsSpinBox,SIGNAL(valueChanged(int)),view,SLOT(setViewCountColumns(int)));

connect(model,SIGNAL(dataReaded()),model,SLOT(setUpDataMatrixModel()));
connect(model,SIGNAL(dataMatrixModelReady(QStandardItemModel*)),
        view,SLOT(setDataMatrixModel(QStandardItemModel*)));

connect(view,SIGNAL(dataMatrixModelSet()),model,SLOT(setUpDistanceMatrixModel()));
connect(model,SIGNAL(distanceMatrixModelReady(QStandardItemModel*)),
            view,SLOT(setDistanceMatrixModel(QStandardItemModel*)));
connect(view->parametersSwithcerBar,SIGNAL(currentChanged(int)),model,SLOT(calculateNewDistanceMatrixModel(int)));
connect(model,SIGNAL(distanceMatrixCalculated(QStandardItemModel*)),view,SLOT(updateDistanceMatrixModel(QStandardItemModel*)));
Просмотр темы полностью (откроется в новом окне)
RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 5.7.2025, 5:20