По-моему, здесь есть несколько вариантов разных степеней удобства/грамотности:
1) Если это одна единая немасштабируемая программа: самый тупой вариант -- объявить глобальную переменную типа MainWindow*. Тогда из любого места проекта будет доступ к всем переменным всего-чего-можно. Это путь в стиле "C" и для ООП, конечно, смотрится топорно. Но работает эффективно.
main.c:
MainWindow *mainwindow;
main.h:
extern MainWindow *mainwindow;
2) Везде в иерархии классов передавать ссылки на соответствующие классы, т.е. объявить:
class Explorer( MainWindow *parent = 0 )
{
...
}
explorer = new Explorer(this);
3) Предыдущий вариант плох тем, что MainWindow и Explorer завязываются друг на друга. Чтобы этого избежать, можно сделать передачу в конструкторе ссылок на все необходимые QAction:
class Explorer( QAction *act1=0, QAction *act2=0, QAction *act3=0 ... )
---------------------------------------------------
Кстати, Explorer -- это же наследник какого-то Qt-класса. Поэтому грамотнее написать не
,а
explorer = new Explorer(this);
При этом констктор самого класса делать так:
class Explorer : QWidget
{
Q_OBJECT
public:
Explorer( QWidget *parent = 0 );
};
Explorer::Explorer( QWidget *parent )
: QWidget( parent ) // ЗДЕСЬ ПЕРЕДАЕМ ССЫЛКУ НА РОДИТЕЛЯ
{
}
При таком подходе Qt сама заботится об уничтожении Explorer при уничтожении родителя. Никаких delete не нужно.
Может кто-нибуть подскажет еще чего более грамотное.