Russian Qt Forum
Апрель 26, 2024, 19:26 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [Знатоки] Поясните смысл [Решено]  (Прочитано 3200 раз)
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« : Сентябрь 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);
 

? Улыбающийся
« Последнее редактирование: Сентябрь 06, 2016, 10:13 от kuzulis » Записан

ArchLinux x86_64 / Win10 64 bit
ssoft
Программист
*****
Offline Offline

Сообщений: 579


Просмотр профиля
« Ответ #1 : Сентябрь 06, 2016, 09:00 »

Вообще, такой коннект возвращает WARNING и результат false.
Код:
QObject::connect: Cannot connect QObject::(null) to QObject::(null)
Может хотели имитировать m_model->deleteLater()? Какая версия Qt?
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #2 : Сентябрь 06, 2016, 09:12 »

имхо, должен быть disconnect
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #3 : Сентябрь 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: Ну вот, нашли косячок. Улыбающийся

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

ArchLinux x86_64 / Win10 64 bit
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.1 секунд. Запросов: 23.