crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> Последовательный вызов слотов.
Andrewshkovskii
  опции профиля:
сообщение 25.9.2009, 20:22
Сообщение #1


Активный участник
***

Группа: Участник
Сообщений: 351
Регистрация: 27.12.2008
Пользователь №: 467

Спасибо сказали: 18 раз(а)




Репутация:   1  


Ситуация такая : я сейчас отлаживаю приложения, и после каждого вызова своего метода(слота)/сигнала вывожу информацию кто его вызвал.
Примерно вот так
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*)));
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 25.9.2009, 21:13
Сообщение #2


Мастер
******

Группа: Модератор
Сообщений: 3293
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Уже кто-то завадал подобный вопрос, и если мне не изменяет память, то пришли к тому, что если к одному слот привязано несколько сигналов, то порядок вызова не определен.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 25.9.2009, 21:46
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


Ты об этом? http://www.forum.crossplatform.ru/index.ph...ost&p=19452
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 26.9.2009, 4:05
Сообщение #4


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9656
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(Andrewshkovskii @ 26.9.2009, 0:22) *
И вопрос такой : если я к одному слоту привязываю несколько сигналов, можно ли добиться того, что бы они вызывались в порядке подключения через QObject::connect()?
Об обратной ситуации явно сказанао в документации:
Цитата
Если несколько слотов связаны с одним сигналом, то при испускании сигнала они будут выполнены один за другим в произвольном порядке.
И в твоём случае скорее всего также.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 27.9.2009, 21:52
Сообщение #5


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


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

понять не могу при чем тут порядок подключения.
он играет роль только при обратной ситуации которую и описали в документации.
здесь грает роль порядок вызова сигнала, я так думаю. какой сигнал первый вызван соответствующее соединения этого сигнала и сработает.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 3.12.2020, 14:07