Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Call widget of mainwindow in an other class
Forum Updated to NodeBB v4.3 + New Features

Call widget of mainwindow in an other class

Scheduled Pinned Locked Moved Solved General and Desktop
15 Posts 3 Posters 1.5k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • ? A Former User

    @mrjj if I write only this works, but why in the other way doesn't work, the application writes crashes

    mrjjM Offline
    mrjjM Offline
    mrjj
    Lifetime Qt Champion
    wrote on last edited by
    #4

    @vale88
    I dont think it crashes i think it just closes as there is no top window.
    QApplication handles that.

    you can try

    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
       a.setQuitOnLastWindowClosed(false);
    
    //    MainWindow w;
    //    w.showMaximized();
        Splash w;
        w.show();
    

    and see if that helps.

    1 Reply Last reply
    0
    • ? A Former User

      @mrjj if I write only this works, but why in the other way doesn't work, the application writes crashes

      Cobra91151C Offline
      Cobra91151C Offline
      Cobra91151
      wrote on last edited by Cobra91151
      #5

      @vale88

      Hello! I think the problem is with not initialized pointer - Ui::MainWindow *ptr;. For example try to initialize it in the Splash constructor.

      Example:

      ptr = new Ui::MainWindow();
      

      Also don't forget to delete ptr in the Splash destructor later.

      By the way, try to attach the debugger to detect the issue.

      ? 1 Reply Last reply
      0
      • Cobra91151C Cobra91151

        @vale88

        Hello! I think the problem is with not initialized pointer - Ui::MainWindow *ptr;. For example try to initialize it in the Splash constructor.

        Example:

        ptr = new Ui::MainWindow();
        

        Also don't forget to delete ptr in the Splash destructor later.

        By the way, try to attach the debugger to detect the issue.

        ? Offline
        ? Offline
        A Former User
        wrote on last edited by
        #6

        @Cobra91151 I wrote:

        void Splash::on_pushButton_2_clicked()
        {
            ptr = new Ui::MainWindow;
        
            close();
            g.showMaximized();
            ptr->stackedWidget_3->setCurrentIndex(3);
            //emit invio_segnaleM();
        
        }
        
        

        but it crashes

        Cobra91151C 1 Reply Last reply
        0
        • ? A Former User

          @Cobra91151 I wrote:

          void Splash::on_pushButton_2_clicked()
          {
              ptr = new Ui::MainWindow;
          
              close();
              g.showMaximized();
              ptr->stackedWidget_3->setCurrentIndex(3);
              //emit invio_segnaleM();
          
          }
          
          

          but it crashes

          Cobra91151C Offline
          Cobra91151C Offline
          Cobra91151
          wrote on last edited by Cobra91151
          #7

          @vale88

          First, the problem with your code is, that every time you press the button (button click) new object generates and it create the memory leak.

          Set ptr = new Ui::MainWindow; to the Splash constructor to fix it and delete it in the destructor.

          Secondly, if it still crashes, try to debug your application with attached debugger.

          ? 1 Reply Last reply
          0
          • Cobra91151C Cobra91151

            @vale88

            First, the problem with your code is, that every time you press the button (button click) new object generates and it create the memory leak.

            Set ptr = new Ui::MainWindow; to the Splash constructor to fix it and delete it in the destructor.

            Secondly, if it still crashes, try to debug your application with attached debugger.

            ? Offline
            ? Offline
            A Former User
            wrote on last edited by
            #8

            @Cobra91151 I tried with debug but I on't understand, it says that the inferior is...

            Cobra91151C 1 Reply Last reply
            0
            • ? A Former User

              @Cobra91151 I tried with debug but I on't understand, it says that the inferior is...

              Cobra91151C Offline
              Cobra91151C Offline
              Cobra91151
              wrote on last edited by
              #9

              @vale88

              What is your compiler and OS? Attach the screenshot of the issue from debugger here.

              1 Reply Last reply
              1
              • mrjjM Offline
                mrjjM Offline
                mrjj
                Lifetime Qt Champion
                wrote on last edited by
                #10

                Hi
                Why are you creating
                void Splash::on_pushButton_2_clicked()
                {
                ptr = new Ui::MainWindow; <<< WHY ? the g already done it
                close();
                g.showMaximized();
                // this is not good. = ptr->stackedWidget_3->setCurrentIndex(3);
                //should be
                g.SetPage(3); // SetPage(int index) being a new function that does ui->stackedWidget_3->setCurrentIndex(index);
                //emit invio_segnaleM();
                }

                ? 1 Reply Last reply
                0
                • mrjjM mrjj

                  Hi
                  Why are you creating
                  void Splash::on_pushButton_2_clicked()
                  {
                  ptr = new Ui::MainWindow; <<< WHY ? the g already done it
                  close();
                  g.showMaximized();
                  // this is not good. = ptr->stackedWidget_3->setCurrentIndex(3);
                  //should be
                  g.SetPage(3); // SetPage(int index) being a new function that does ui->stackedWidget_3->setCurrentIndex(index);
                  //emit invio_segnaleM();
                  }

                  ? Offline
                  ? Offline
                  A Former User
                  wrote on last edited by
                  #11

                  @mrjj yes but if I want to acceed to an object of the mainwindow, like a pushButton, how must I do?

                  mrjjM 1 Reply Last reply
                  0
                  • ? A Former User

                    @mrjj yes but if I want to acceed to an object of the mainwindow, like a pushButton, how must I do?

                    mrjjM Offline
                    mrjjM Offline
                    mrjj
                    Lifetime Qt Champion
                    wrote on last edited by mrjj
                    #12

                    @vale88
                    Well you can make the UI public. Bad design.
                    Or simply add public functions to MainWindow that does what you want.
                    like
                    g.SomethingWithButton();

                    inside SomethingWithButton(), you have access to its UI and can
                    do what ever you like.

                    So make a few functions, that does what you need with MainWindows Widgets.

                    ? 1 Reply Last reply
                    1
                    • mrjjM mrjj

                      @vale88
                      Well you can make the UI public. Bad design.
                      Or simply add public functions to MainWindow that does what you want.
                      like
                      g.SomethingWithButton();

                      inside SomethingWithButton(), you have access to its UI and can
                      do what ever you like.

                      So make a few functions, that does what you need with MainWindows Widgets.

                      ? Offline
                      ? Offline
                      A Former User
                      wrote on last edited by
                      #13

                      @mrjj I used connect and it works, but nw I try in this way

                      mrjjM 1 Reply Last reply
                      0
                      • ? A Former User

                        @mrjj I used connect and it works, but nw I try in this way

                        mrjjM Offline
                        mrjjM Offline
                        mrjj
                        Lifetime Qt Champion
                        wrote on last edited by
                        #14

                        @vale88
                        The good part about using functions to access the private UI in MainWindow is
                        that rest of program dont know which widgets it has.
                        So if you change something in MainWindow, you only need to change one other place
                        in the (access) function. rest of the program needs no changes.

                        ? 1 Reply Last reply
                        0
                        • mrjjM mrjj

                          @vale88
                          The good part about using functions to access the private UI in MainWindow is
                          that rest of program dont know which widgets it has.
                          So if you change something in MainWindow, you only need to change one other place
                          in the (access) function. rest of the program needs no changes.

                          ? Offline
                          ? Offline
                          A Former User
                          wrote on last edited by
                          #15

                          @mrjj thanks it works

                          1 Reply Last reply
                          0

                          • Login

                          • Login or register to search.
                          • First post
                            Last post
                          0
                          • Categories
                          • Recent
                          • Tags
                          • Popular
                          • Users
                          • Groups
                          • Search
                          • Get Qt Extensions
                          • Unsolved