Если вам действительно нужно главное окно, лучше всего передать указатель MainWindow.Недостаток статического метода заключается в том, что он перестает работать с более чем одним главным окном.
Я бы предложил избегать доступа к главному окну из содержащихся в нем виджетов и использовать вместо этого сигналы.Например:
class MainWindow {
public:
explicit MainWindow( QWidget* parent=0 ) {
tab = new TabWidget;
...
MySubSubClass1* ssw1 = new MySubSubClass;
connect( ssw1, SIGNAL(textChanged(QString)), this, SLOT(page1TextChanged(QString));
tab->addWidget( ssw1 );
}
private Q_SLOTS:
void page1TextChanged( const QString& ) {
//do something...
}
};
MySubSubClass1 затем испускает textChanged (), addresseeChanged () (например, в адресной книге) или любой уровень абстракции или детализации, который имеет смысл на более высоком уровне.Таким образом, MySubSubClass является универсальным и вообще не должен знать о MainWindow.Это может быть повторно использовано в любом другом контексте.Если MySubSubClass содержит другие виджеты, он может снова подключиться к их сигналам.