Russian Qt Forum

Qt => Общие вопросы => Тема начата: kuzulis от Сентябрь 06, 2016, 08:46



Название: [Знатоки] Поясните смысл [Решено]
Отправлено: kuzulis от Сентябрь 06, 2016, 08:46
Всем доброго времени.

Я тут смотрел сорцы QtC и наткнулся на такой финт:

Код
C++ (Qt)
void DiagramsManager::setModel(TreeModel *model)
{
   if (m_model)
       connect(m_model, 0, this, 0);
   m_model = model;
   if (model) {
       connect(model, &QAbstractItemModel::dataChanged,
               this, &DiagramsManager::onDataChanged);
   }
}
 

вопрос, какой смысл в

Код
C++ (Qt)
connect(m_model, 0, this, 0);
 

? :)


Название: Re: [Знатоки] Поясните смысл
Отправлено: ssoft от Сентябрь 06, 2016, 09:00
Вообще, такой коннект возвращает WARNING и результат false.
Код:
QObject::connect: Cannot connect QObject::(null) to QObject::(null)
Может хотели имитировать m_model->deleteLater()? Какая версия Qt?


Название: Re: [Знатоки] Поясните смысл
Отправлено: pastor от Сентябрь 06, 2016, 09:12
имхо, должен быть disconnect


Название: Re: [Знатоки] Поясните смысл [Решено]
Отправлено: kuzulis от Сентябрь 06, 2016, 10:13
О, там еще есть аналогичное:

Код
C++ (Qt)
void DiagramsManager::setDiagramController(DiagramController *diagramController)
{
   if (m_diagramController)
       connect(m_diagramController, 0, this, 0);
   m_diagramController = diagramController;
   if (diagramController) {
       connect(diagramController, &DiagramController::diagramAboutToBeRemoved,
               this, &DiagramsManager::removeDiagram);
   }
}
 

Цитировать
имхо, должен быть disconnect

Да, скорее всего это просто опечатка, т.к. везде в других аналогичных местах делают disconnect. Я что-то тоже с утра не проснулся еще.  ::)

Цитировать
Какая версия Qt?

Минимум заявлена 5.6.0.

PS: Ну вот, нашли косячок. :)

Всем спасибо, все яснее ясного.