Neyury: Адрес функции передается без параметров (можно туда вписать лишь типы, но это не обязательно). Соединение сигналов со слотами работают таким образом, что сигнал как бы вызывает слот и передает ему свои параметры, с которыми эмиттится сигнал (аргументы) в аргументы слота. То есть у сигнала и слота сигнатура должна совпадать. Если она не совпадает, то при старом синтаксисе (с макросами SIGNAL/CLOT) они игнорируются, а при новом (три параметра с крайним типа Functor или через явные адреса функций) будет ошибка компиляции. В данном случае QPushButton::clicked не имеет параметров, потому и вмоей лямбда-функции их нет (круглые скобки можно опускать).
Smittyperm: я не столь близок с Java-миром, не могли бы вы дать что-то почитать по поводу screen? Гугол ожидаемо выдает ерунду. Подозреваю, что речь о неком веб-фреймворке, умеющем пробрасывать консоль в веб-интерфейс.
Pavel K: вы представляете, что при каждом вызове вашей гипотетической функции с рекурсивным вызовом будет инстанцироваться новая реализация? Это как, круто-модно-молодежно?
А в чем проблема? Обходы у вас делаются, т.е. алгоритм есть. Для 1-3 нужно просто высунуть наружу итератор (указатель на узел, обернутый в класс с нужными операциями). В нем определить операции получения одного из следующих узлов и родительского.