Rodegast
Ну вот тебе 2 “независимых” окна.
И какое отношение сигнал из окна X2 имеет к окну X1? Чем обосновано нахождение сигнала внутри класса X2? Ты запутался, задёргался.
В приличной системе сообщений окно само должно посылать сообщение, если хочет что-то сообщить. Сообщение от окна посылается менеджеру сообщений, к которому подключены другие окна на прослушивание и тд и тп. Таким образом они могут реагировать на сообщения и не знать про наличие других окон в системе. Если выстроить высокую иерархию окон, то окно с самого низа иерархии может послать сообщение менеджеру сообщений, которое сможет услышать окно на самой вершине иерархии. При этом эти окна вообще друг про друга не знают. А если они друг про друга не знают, то и про сигналы внутри них они точно так же не знают. Ты просто не сможешь сделать рефакторинг, поменять расположение окон, потому что у тебя будет куча лишних связей между ними. И в итоге у тебя программа просто застынет и ты не будешь её развивать, потому что каждое развитие потребует её полного переписывания (что, естественно, ты делать не будешь).
Из той истории, когда ты докопался до его (zetcode Jan Bodnar) окна в виде QWidget. Почему он так сделал, а не через QMainWindow. Ты утверждал, что это ошибка, потому что он не знает нифига. Это не ошибка. Это сделано потому, что каждый его пример можно использовать для сборки целого приложения, у которого одно QMainWindow и куча виджетов,
встроенных в это главное окно. У него всё сделано так, что виджеты в любой момент можно встраивать в любые другие виджеты. Поэтому там нет этого QMainWindow почти нигде. Он просто видит это всё заранее, поэтому он так и пишет, что тебе непонятно ничего, так как ты привык только туториалы просматривать, а не реальные приложения.
И ещё я тебе скажу: ты не можешь делать два QMainWindow в одном приложении, потому что QMainWindow - это кучка виджетов (меню, централка и статусная строка), собранных в одном окне, это шаблон такой, чтобы не делать это каждый раз, когда пишется приложение, у которого есть главное окно.