Is the player_menu object being deleted or just hidden? This example I think captures your structure, and it works:
Qt Code:
  1. #include <QtGui>
  2. #include <QDebug>
  3.  
  4. class PlayerMenu: public QDialog {
  5. Q_OBJECT
  6. public:
  7. PlayerMenu(QWidget *p = 0): QDialog(p) { }
  8. };
  9.  
  10.  
  11. class GameLogic : public QObject
  12. {
  13. Q_OBJECT
  14. PlayerMenu *player_menu; //the menu for the player
  15.  
  16. public:
  17. GameLogic(QString player_name, int num_of_AI, QWidget *parent = 0) {
  18. player_menu = new PlayerMenu(parent);
  19. player_menu->show();
  20. }
  21. ~GameLogic() {
  22. delete player_menu;
  23. }
  24. };
  25.  
  26.  
  27.  
  28. class StartMenu: public QMainWindow {
  29. Q_OBJECT
  30. public:
  31. StartMenu(QWidget *p = 0): QMainWindow(p), gl(0) {
  32. setCentralWidget(new QLabel("Main Window", this));
  33.  
  34. gl = new GameLogic("dummy", 1, this);
  35. }
  36. ~StartMenu() {
  37. delete gl;
  38. }
  39. public slots:
  40. private:
  41. GameLogic *gl;
  42. };
  43.  
  44. int main(int argc, char *argv[])
  45. {
  46. QApplication app(argc, argv);
  47.  
  48.  
  49. StartMenu m;
  50. m.show();
  51. return app.exec();
  52. }
  53. #include "main.moc"
To copy to clipboard, switch view to plain text mode 

The reason I asked about your QPointer is that I think you wanted a QScopedPointer in order that it do the memory deallocation during destruction.