crossplatform.ru

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


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

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

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


Последние 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 Текстовая версия Сейчас: 1.12.2022, 15:26