5.10 Шлее.
Все компилиться и работает. Стал перечитывать (изучать) код вникая, что происходит.
Первое, что бросилось в глаза это соединение объектов старым способом или первым как хотите.
То есть вот так:
connect(pact, SIGNAL(triggered()), m_psigMapper, SLOT(map()));
Из предыдущих дебатов да и в книге сказано, что используя альтернативный метод можно обнаружить ошибки во время компиляции, а не на этапе выполнения кода. Это в части касающейся соединения объектов используя сигнально-слотовый механизм. То есть вот таким образом:
connect(pact, &QAction::triggered, m_psigMapper, &QSignalMapper::map);
Но вот не задача компилятор ругается.
/home/woodyfire/Programmings/Qt/testWorkElem/mdiprogram.cpp:131: ошибка: no matching function for call to ‘MDIProgram::connect(QAction*&, void (QAction::*)(bool), QSignalMapper*&, <unresolved overloaded function type>)’
connect(pact, &QAction::triggered, m_psigMapper, &QSignalMapper::map);
^
Как я понимаю это все из-за того, что передаваемый параметр (его тип) не схож с типом принимаемого параметра слотом.
Как в таких случаях быть? Использовать первый способ?! Или же есть решение?
коннекти лямбду
connect(pact, &QAction::triggered, [&m_psigMapper](bool) {m_psigMapper.map();}); как-то так
Обсуждают сегодня