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. Need help passing a variable to another Form (Signals/Slots)
Forum Updated to NodeBB v4.3 + New Features

Need help passing a variable to another Form (Signals/Slots)

Scheduled Pinned Locked Moved Solved General and Desktop
25 Posts 5 Posters 4.4k 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.
  • ? Offline
    ? Offline
    A Former User
    wrote on last edited by
    #1

    Hello,

    I've been working on a tool to connect with a MySQL database. However, I'd like to pass an int and an QSqlDatabase object from my mainwindow to another form when a Push Button is clicked.

    mainwindow.h

    //...
    signals:
        void set_mode(int mode, QSqlDatabase db);
    //...
    

    mainwindow.cpp

    //...
    connect(ui->pushButton_open, SIGNAL(&QPushButton::clicked), this, SLOT(&get_info(1, db)));
    //...
    void MainWindow::on_pushButton_open_clicked()
    {
        dialog.setModal(true);
        dialog.exec();
    }
    //...
    

    dialog.h

    //...
    public slots:
        void get_info(int x, QSqlDatabase db);
    //...
    

    I don't know if I did anything the right way so far. Any idea?

    J.HilkJ A 2 Replies Last reply
    0
    • ? A Former User

      Hello,

      I've been working on a tool to connect with a MySQL database. However, I'd like to pass an int and an QSqlDatabase object from my mainwindow to another form when a Push Button is clicked.

      mainwindow.h

      //...
      signals:
          void set_mode(int mode, QSqlDatabase db);
      //...
      

      mainwindow.cpp

      //...
      connect(ui->pushButton_open, SIGNAL(&QPushButton::clicked), this, SLOT(&get_info(1, db)));
      //...
      void MainWindow::on_pushButton_open_clicked()
      {
          dialog.setModal(true);
          dialog.exec();
      }
      //...
      

      dialog.h

      //...
      public slots:
          void get_info(int x, QSqlDatabase db);
      //...
      

      I don't know if I did anything the right way so far. Any idea?

      J.HilkJ Offline
      J.HilkJ Offline
      J.Hilk
      Moderators
      wrote on last edited by J.Hilk
      #2

      hi @SnuggleKat
      at the very least you're mixing new and old connect syntax,

      did you read through this:

      http://doc.qt.io/qt-5/signalsandslots.html

      and this

      https://wiki.qt.io/New_Signal_Slot_Syntax

      should give you everything you need to fix your errors.


      additionally to that, you're trying to connect to a slot that has incompatible arguments to your signal, that won't work either.


      Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


      Q: What's that?
      A: It's blue light.
      Q: What does it do?
      A: It turns blue.

      1 Reply Last reply
      3
      • ? A Former User

        Hello,

        I've been working on a tool to connect with a MySQL database. However, I'd like to pass an int and an QSqlDatabase object from my mainwindow to another form when a Push Button is clicked.

        mainwindow.h

        //...
        signals:
            void set_mode(int mode, QSqlDatabase db);
        //...
        

        mainwindow.cpp

        //...
        connect(ui->pushButton_open, SIGNAL(&QPushButton::clicked), this, SLOT(&get_info(1, db)));
        //...
        void MainWindow::on_pushButton_open_clicked()
        {
            dialog.setModal(true);
            dialog.exec();
        }
        //...
        

        dialog.h

        //...
        public slots:
            void get_info(int x, QSqlDatabase db);
        //...
        

        I don't know if I did anything the right way so far. Any idea?

        A Offline
        A Offline
        anil_arise
        wrote on last edited by anil_arise
        #3

        @SnuggleKat try this:
        mainwindow.h

        //...
        //signals:
        //void set_mode(int mode, QSqlDatabase db);
        //...

        mainwindow.cpp

        //...
        //connect(ui->pushButton_open, SIGNAL(&QPushButton::clicked), this, SLOT(&get_info(1, db)));
        //...
        void MainWindow::on_pushButton_open_clicked()
        {
        dialog.setModal(true);
        dialog.exec();
        dialog.get_info(1, db);
        }
        //...

        dialog.h

        //...
        public slots:
        void get_info(int x, QSqlDatabase db);
        //...

        OR ***************************************
        just change it
        connect(ui->pushButton_open, SIGNAL(clicked), dialog, SLOT(get_info(1, db)));

        and read it SIGNAL_SLOT

        1 Reply Last reply
        0
        • ? Offline
          ? Offline
          A Former User
          wrote on last edited by
          #4

          Thank you for the answers. Gonna give it a try soon. When my MainWindow class inherites from the QMainWindow class, does it indirectly derive from the QObject class?

          jsulmJ 1 Reply Last reply
          0
          • ? A Former User

            Thank you for the answers. Gonna give it a try soon. When my MainWindow class inherites from the QMainWindow class, does it indirectly derive from the QObject class?

            jsulmJ Offline
            jsulmJ Offline
            jsulm
            Lifetime Qt Champion
            wrote on last edited by jsulm
            #5

            @SnuggleKat said in Need help passing a variable to another Form (Signals/Slots):

            When my MainWindow class inherites from the QMainWindow class, does it indirectly derive from the QObject class?

            Yes.
            You can see what a class is inherited from in the documentation: http://doc.qt.io/qt-5/qwidget.html (as QMainWindow inherits QWidget)
            See "Inherits:" column at the top.

            https://forum.qt.io/topic/113070/qt-code-of-conduct

            1 Reply Last reply
            2
            • ? Offline
              ? Offline
              A Former User
              wrote on last edited by A Former User
              #6

              Okay,
              inspired by this: http://doc.qt.io/qt-5/signalsandslots.html#a-small-example

              I have done the following:

              The functions.h defines a class of a QSqlDatabase and an int attribute.

              //...
              #include <QSqlDatabase>
              
              class Option: QSqlDatabase
              {
              private:
                  QSqlDatabase db;
                  int mode;
                  
              public:
                  QSqlDatabase get_db(){ return this->db; }
                  int get_mode(){ return this->mode; }
                  
              signals:
                  void send_option(QSqlDatabase db, int mode;{ emit set_up(db, mode); }
                  
              public slots:
                  void set_up(QSqlDatabase db, int mode){ this->db = db; this->mode = mode; }
              };
              

              Attempting to pass such an object over to another form by doing this:
              mainwindow.h:

              //...
              #include "functions.h"
              //...
              private:
                  QSqlDatabase db;
                  Option opt_main;
              

              mainwindow.cpp

              connect(&opt_main, SIGNAL(&Option::send_option), &opt_dia, SLOT(&Option::set_up));
              

              opt_dia is an object of Option. What's the best way to instantiate this option inside the dialog.h? The dialog.h has the functions.h included.

              jsulmJ 1 Reply Last reply
              0
              • ? A Former User

                Okay,
                inspired by this: http://doc.qt.io/qt-5/signalsandslots.html#a-small-example

                I have done the following:

                The functions.h defines a class of a QSqlDatabase and an int attribute.

                //...
                #include <QSqlDatabase>
                
                class Option: QSqlDatabase
                {
                private:
                    QSqlDatabase db;
                    int mode;
                    
                public:
                    QSqlDatabase get_db(){ return this->db; }
                    int get_mode(){ return this->mode; }
                    
                signals:
                    void send_option(QSqlDatabase db, int mode;{ emit set_up(db, mode); }
                    
                public slots:
                    void set_up(QSqlDatabase db, int mode){ this->db = db; this->mode = mode; }
                };
                

                Attempting to pass such an object over to another form by doing this:
                mainwindow.h:

                //...
                #include "functions.h"
                //...
                private:
                    QSqlDatabase db;
                    Option opt_main;
                

                mainwindow.cpp

                connect(&opt_main, SIGNAL(&Option::send_option), &opt_dia, SLOT(&Option::set_up));
                

                opt_dia is an object of Option. What's the best way to instantiate this option inside the dialog.h? The dialog.h has the functions.h included.

                jsulmJ Offline
                jsulmJ Offline
                jsulm
                Lifetime Qt Champion
                wrote on last edited by
                #7

                @SnuggleKat said in Need help passing a variable to another Form (Signals/Slots):

                connect(&opt_main, SIGNAL(&Option::send_option), &opt_dia, SLOT(&Option::set_up));

                This is still wrong - you're mixing old and new connect syntax.
                Please read the documentation (links were already provided)..

                https://forum.qt.io/topic/113070/qt-code-of-conduct

                ? 1 Reply Last reply
                3
                • jsulmJ jsulm

                  @SnuggleKat said in Need help passing a variable to another Form (Signals/Slots):

                  connect(&opt_main, SIGNAL(&Option::send_option), &opt_dia, SLOT(&Option::set_up));

                  This is still wrong - you're mixing old and new connect syntax.
                  Please read the documentation (links were already provided)..

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

                  @jsulm said in Need help passing a variable to another Form (Signals/Slots):

                  Ah, sorry, totally misseen the new syntacks lacks the SIGNAL and SLOT terms.

                  QObject::connect(&opt_main, &Option::send_option, &opt_dia, &Option::set_up);
                  

                  Still something wrong?
                  What I need to know is what'd be the best way to instantiate the opt_dia object since it's needed in another Form class

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

                    Hi
                    you also need
                    class Option: QSqlDatabase
                    {
                    Q_OBJECT
                    ...

                    Q_OBJECT is needed for signals & slots.

                    note, after adding it, select clean all, rebuild all to make sure its seen.

                    ? 1 Reply Last reply
                    1
                    • mrjjM mrjj

                      Hi
                      you also need
                      class Option: QSqlDatabase
                      {
                      Q_OBJECT
                      ...

                      Q_OBJECT is needed for signals & slots.

                      note, after adding it, select clean all, rebuild all to make sure its seen.

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

                      @mrjj said in Need help passing a variable to another Form (Signals/Slots):

                      Hi
                      you also need
                      class Option: QSqlDatabase
                      {
                      Q_OBJECT
                      ...

                      Q_OBJECT is needed for signals & slots.

                      note, after adding it, select clean all, rebuild all to make sure its seen.

                      Hello,
                      just did that.
                      After this I instantiated another object of the type Option in the dialog.h:

                      #include <QDialog>
                      #include "functions.h"
                      
                      namespace Ui {
                      class Dialog;
                      }
                      
                      class Dialog : public QDialog
                      {
                          Q_OBJECT
                      
                      public:
                          explicit Dialog(QWidget *parent = nullptr);
                          Option opt_dia; //note #1
                          ~Dialog();
                      
                      private:
                          Ui::Dialog *ui;
                          void load_meta();
                          int mode;
                      
                      private slots:
                          void on_pushButton_ok_clicked();
                      };
                      

                      #1 - This causes an error telling me I have an semantic error on QObject::connect(). Making it static seems to solve this, but then I get the following compiling errors:

                      no matching function for call to 'QObject::connectImpl(const Object*&, void**, const Object*&, void**, QtPrivate::QSlotObject<void (Option::*)(QSqlDatabase, int), QtPrivate::List<QSqlDatabase, int>, void>*, Qt::ConnectionType&, const int*&, const QMetaObject*)'
                      
                      invalid static_cast from type 'QObject*' to type 'QtPrivate::FunctionPointer<void (Option::*)(QSqlDatabase, int)>::Object* {aka Option*}'
                      

                      fyi, the Object class now looks like this:

                      #include <QtSql>
                      #include <QSqlDatabase>
                      #include <QTableView>
                      
                      class Option: QSqlDatabase
                      {
                          Q_OBJECT
                      private:
                          QSqlDatabase db;
                          int mode;
                      
                      public:
                          QSqlDatabase get_db(){return this->db;}
                          Option()
                          {
                              this->db = QSqlDatabase::addDatabase("QMYSQL");
                              this->mode = 0;
                          }
                          virtual ~Option();
                          int get_mode(){return this->mode;}
                      
                      signals:
                          void send_option(QSqlDatabase db, int mode){ emit set_up(db, mode); }
                      
                      public slots:
                          void set_up(QSqlDatabase db, int mode){ this->db = db; this->mode = mode; }
                      };
                      
                      jsulmJ 1 Reply Last reply
                      0
                      • ? A Former User

                        @mrjj said in Need help passing a variable to another Form (Signals/Slots):

                        Hi
                        you also need
                        class Option: QSqlDatabase
                        {
                        Q_OBJECT
                        ...

                        Q_OBJECT is needed for signals & slots.

                        note, after adding it, select clean all, rebuild all to make sure its seen.

                        Hello,
                        just did that.
                        After this I instantiated another object of the type Option in the dialog.h:

                        #include <QDialog>
                        #include "functions.h"
                        
                        namespace Ui {
                        class Dialog;
                        }
                        
                        class Dialog : public QDialog
                        {
                            Q_OBJECT
                        
                        public:
                            explicit Dialog(QWidget *parent = nullptr);
                            Option opt_dia; //note #1
                            ~Dialog();
                        
                        private:
                            Ui::Dialog *ui;
                            void load_meta();
                            int mode;
                        
                        private slots:
                            void on_pushButton_ok_clicked();
                        };
                        

                        #1 - This causes an error telling me I have an semantic error on QObject::connect(). Making it static seems to solve this, but then I get the following compiling errors:

                        no matching function for call to 'QObject::connectImpl(const Object*&, void**, const Object*&, void**, QtPrivate::QSlotObject<void (Option::*)(QSqlDatabase, int), QtPrivate::List<QSqlDatabase, int>, void>*, Qt::ConnectionType&, const int*&, const QMetaObject*)'
                        
                        invalid static_cast from type 'QObject*' to type 'QtPrivate::FunctionPointer<void (Option::*)(QSqlDatabase, int)>::Object* {aka Option*}'
                        

                        fyi, the Object class now looks like this:

                        #include <QtSql>
                        #include <QSqlDatabase>
                        #include <QTableView>
                        
                        class Option: QSqlDatabase
                        {
                            Q_OBJECT
                        private:
                            QSqlDatabase db;
                            int mode;
                        
                        public:
                            QSqlDatabase get_db(){return this->db;}
                            Option()
                            {
                                this->db = QSqlDatabase::addDatabase("QMYSQL");
                                this->mode = 0;
                            }
                            virtual ~Option();
                            int get_mode(){return this->mode;}
                        
                        signals:
                            void send_option(QSqlDatabase db, int mode){ emit set_up(db, mode); }
                        
                        public slots:
                            void set_up(QSqlDatabase db, int mode){ this->db = db; this->mode = mode; }
                        };
                        
                        jsulmJ Offline
                        jsulmJ Offline
                        jsulm
                        Lifetime Qt Champion
                        wrote on last edited by
                        #11

                        @SnuggleKat said in Need help passing a variable to another Form (Signals/Slots):

                        This causes an error telling me I have an semantic error on QObject::connect(). Making it static seems to solve this, but then I get the following compiling errors:

                        Please show your exact connect call

                        https://forum.qt.io/topic/113070/qt-code-of-conduct

                        ? 1 Reply Last reply
                        0
                        • jsulmJ jsulm

                          @SnuggleKat said in Need help passing a variable to another Form (Signals/Slots):

                          This causes an error telling me I have an semantic error on QObject::connect(). Making it static seems to solve this, but then I get the following compiling errors:

                          Please show your exact connect call

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

                          @jsulm I have found a little mistake. I accidentally assigned the emit call to the signal instead of the slot. After correcting this I tried connecting 2 instances of my class Option inside the MainWindow class which worked (I think). I still can't see an instance of Option outside the MainWindow class.

                          functions.h

                          #include <QtSql>
                          #include <QSqlDatabase>
                          #include <QTableView>
                          
                          class Option: public QObject
                          {
                              Q_OBJECT
                          private:
                              QSqlDatabase db;
                              int mode;
                          
                          public:
                              QSqlDatabase get_db(){return this->db;}
                              int get_mode(){return this->mode;}
                          
                          signals:
                              void send_option(QSqlDatabase db, int mode);
                          
                          public slots:
                              void set_up(QSqlDatabase db, int mode){ this->db = db; this->mode = mode; emit send_option(db, mode);}
                          };
                          

                          mainwindow.h

                          //...
                          class MainWindow : public QMainWindow
                          {
                              Q_OBJECT
                          
                          public:
                              explicit MainWindow(QWidget *parent = nullptr);
                              ~MainWindow();
                          
                          private slots:
                              void on_pushButton_connect_clicked();
                              void on_pushButton_create_pdf_clicked();
                              void on_pushButton_save_settings_clicked();
                              void on_pushButton_open_clicked();
                          
                          private:
                              Ui::MainWindow *ui;
                              int create_pdf();
                              Dialog dialog;
                              QSqlDatabase db;
                              Option opt_main, testopt; //testopt was the test-instance i used
                          };
                          

                          mainwindow.cpp

                          //...
                          QObject::connect(&opt_main, &Option::send_option, &opt_dia, &Option::set_up); //opt_dia not declared in this scope
                          //...
                          void MainWindow::on_pushButton_open_clicked()
                          {
                              opt_main.send_option(db, 123);
                              dialog.setModal(true);
                              dialog.exec();
                          }
                          

                          dialog.h

                          //...
                          #include "functions.h"
                          
                          namespace Ui {
                          class Dialog;
                          }
                          
                          class Dialog : public QDialog
                          {
                              Q_OBJECT
                          
                          public:
                              explicit Dialog(QWidget *parent = nullptr);
                              //QObject* x;
                              Option opt_dia;
                              ~Dialog();
                          
                          private:
                              Ui::Dialog *ui;
                              void load_meta();
                              int mode;
                          
                          private slots:
                              void on_pushButton_ok_clicked();
                          };
                          

                          dialog.cpp

                          //...
                          void Dialog::on_pushButton_ok_clicked()
                          {
                              qDebug() << "mode: " + QString::number(opt_dia.get_mode()) + " - " + opt_dia.get_db().userName(); //testing the result
                          }
                          

                          opt_dia cannot be found since it's not declared in this scope. If I use &Dialog::opt_dia it is found but the connection will fail to compile with the following error: Fehler: no matching member function for call to 'connect'

                          jsulmJ 1 Reply Last reply
                          0
                          • ? A Former User

                            @jsulm I have found a little mistake. I accidentally assigned the emit call to the signal instead of the slot. After correcting this I tried connecting 2 instances of my class Option inside the MainWindow class which worked (I think). I still can't see an instance of Option outside the MainWindow class.

                            functions.h

                            #include <QtSql>
                            #include <QSqlDatabase>
                            #include <QTableView>
                            
                            class Option: public QObject
                            {
                                Q_OBJECT
                            private:
                                QSqlDatabase db;
                                int mode;
                            
                            public:
                                QSqlDatabase get_db(){return this->db;}
                                int get_mode(){return this->mode;}
                            
                            signals:
                                void send_option(QSqlDatabase db, int mode);
                            
                            public slots:
                                void set_up(QSqlDatabase db, int mode){ this->db = db; this->mode = mode; emit send_option(db, mode);}
                            };
                            

                            mainwindow.h

                            //...
                            class MainWindow : public QMainWindow
                            {
                                Q_OBJECT
                            
                            public:
                                explicit MainWindow(QWidget *parent = nullptr);
                                ~MainWindow();
                            
                            private slots:
                                void on_pushButton_connect_clicked();
                                void on_pushButton_create_pdf_clicked();
                                void on_pushButton_save_settings_clicked();
                                void on_pushButton_open_clicked();
                            
                            private:
                                Ui::MainWindow *ui;
                                int create_pdf();
                                Dialog dialog;
                                QSqlDatabase db;
                                Option opt_main, testopt; //testopt was the test-instance i used
                            };
                            

                            mainwindow.cpp

                            //...
                            QObject::connect(&opt_main, &Option::send_option, &opt_dia, &Option::set_up); //opt_dia not declared in this scope
                            //...
                            void MainWindow::on_pushButton_open_clicked()
                            {
                                opt_main.send_option(db, 123);
                                dialog.setModal(true);
                                dialog.exec();
                            }
                            

                            dialog.h

                            //...
                            #include "functions.h"
                            
                            namespace Ui {
                            class Dialog;
                            }
                            
                            class Dialog : public QDialog
                            {
                                Q_OBJECT
                            
                            public:
                                explicit Dialog(QWidget *parent = nullptr);
                                //QObject* x;
                                Option opt_dia;
                                ~Dialog();
                            
                            private:
                                Ui::Dialog *ui;
                                void load_meta();
                                int mode;
                            
                            private slots:
                                void on_pushButton_ok_clicked();
                            };
                            

                            dialog.cpp

                            //...
                            void Dialog::on_pushButton_ok_clicked()
                            {
                                qDebug() << "mode: " + QString::number(opt_dia.get_mode()) + " - " + opt_dia.get_db().userName(); //testing the result
                            }
                            

                            opt_dia cannot be found since it's not declared in this scope. If I use &Dialog::opt_dia it is found but the connection will fail to compile with the following error: Fehler: no matching member function for call to 'connect'

                            jsulmJ Offline
                            jsulmJ Offline
                            jsulm
                            Lifetime Qt Champion
                            wrote on last edited by
                            #13

                            @SnuggleKat Why don't you simply define the slot inside Dialog class?
                            Exposing a member (opt_dia) as public to outside world is bad design.

                            https://forum.qt.io/topic/113070/qt-code-of-conduct

                            ? 1 Reply Last reply
                            1
                            • jsulmJ jsulm

                              @SnuggleKat Why don't you simply define the slot inside Dialog class?
                              Exposing a member (opt_dia) as public to outside world is bad design.

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

                              @jsulm said in Need help passing a variable to another Form (Signals/Slots):

                              @SnuggleKat Why don't you simply define the slot inside Dialog class?
                              Exposing a member (opt_dia) as public to outside world is bad design.

                              I'm aware it's bad design. That's why I asked what'd be the best way to instantiate it.
                              Is it the right way to access the signal through opt_dia if I define the slot inside the Dialog class?
                              And what should the connect() look like now?

                              jsulmJ 1 Reply Last reply
                              0
                              • ? A Former User

                                @jsulm said in Need help passing a variable to another Form (Signals/Slots):

                                @SnuggleKat Why don't you simply define the slot inside Dialog class?
                                Exposing a member (opt_dia) as public to outside world is bad design.

                                I'm aware it's bad design. That's why I asked what'd be the best way to instantiate it.
                                Is it the right way to access the signal through opt_dia if I define the slot inside the Dialog class?
                                And what should the connect() look like now?

                                jsulmJ Offline
                                jsulmJ Offline
                                jsulm
                                Lifetime Qt Champion
                                wrote on last edited by jsulm
                                #15

                                @SnuggleKat said in Need help passing a variable to another Form (Signals/Slots):

                                When I define the slot inside the Dialog class is it the right way to access the signal through opt_dia?

                                I don't understand this - what signal do you want to access from opt_dia?
                                Connect would be:

                                connect(&opt_main, &Option::send_option, &dialog, &Dialog::set_up);
                                

                                Actually I don't see a need for signal/slot here as dialog is a member of MainWindow. set_up can be a normal method which you call like any other without emiting a signal:

                                dialog.set_up(...);
                                

                                https://forum.qt.io/topic/113070/qt-code-of-conduct

                                ? 1 Reply Last reply
                                0
                                • jsulmJ jsulm

                                  @SnuggleKat said in Need help passing a variable to another Form (Signals/Slots):

                                  When I define the slot inside the Dialog class is it the right way to access the signal through opt_dia?

                                  I don't understand this - what signal do you want to access from opt_dia?
                                  Connect would be:

                                  connect(&opt_main, &Option::send_option, &dialog, &Dialog::set_up);
                                  

                                  Actually I don't see a need for signal/slot here as dialog is a member of MainWindow. set_up can be a normal method which you call like any other without emiting a signal:

                                  dialog.set_up(...);
                                  
                                  ? Offline
                                  ? Offline
                                  A Former User
                                  wrote on last edited by
                                  #16

                                  @jsulm Sorry, I meant to ask if ithis would be the right way of doing it:

                                  public slots:
                                     void set_up(QSqlDatabase db, int mode){ this->db = db; this->mode = mode; emit opt_dia.send_option(db, mode);}
                                  

                                  Change the connect() method as suggestion but the values don't get passed over.
                                  Same for adding dialog.set_up();
                                  Should I make QSqlDatabase db and int mode static?

                                  jsulmJ 1 Reply Last reply
                                  0
                                  • ? A Former User

                                    @jsulm Sorry, I meant to ask if ithis would be the right way of doing it:

                                    public slots:
                                       void set_up(QSqlDatabase db, int mode){ this->db = db; this->mode = mode; emit opt_dia.send_option(db, mode);}
                                    

                                    Change the connect() method as suggestion but the values don't get passed over.
                                    Same for adding dialog.set_up();
                                    Should I make QSqlDatabase db and int mode static?

                                    jsulmJ Offline
                                    jsulmJ Offline
                                    jsulm
                                    Lifetime Qt Champion
                                    wrote on last edited by jsulm
                                    #17

                                    @SnuggleKat "Change the connect() method as suggestion but the values don't get passed over." - please show the code.
                                    "Should I make QSqlDatabase db and int mode static?" - please don't! Static variables are bad design in most cases.

                                    https://forum.qt.io/topic/113070/qt-code-of-conduct

                                    ? 1 Reply Last reply
                                    0
                                    • jsulmJ jsulm

                                      @SnuggleKat "Change the connect() method as suggestion but the values don't get passed over." - please show the code.
                                      "Should I make QSqlDatabase db and int mode static?" - please don't! Static variables are bad design in most cases.

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

                                      @jsulm said in Need help passing a variable to another Form (Signals/Slots):

                                      @SnuggleKat "Change the connect() method as suggestion but the values don't get passed over." - please show the code.
                                      "Should I make QSqlDatabase db and int mode static?" - please don't! Static variables are bad design in most cases.

                                      That's what I thought.

                                      void MainWindow::on_pushButton_open_clicked()
                                      {
                                          opt_main.send_option(db, 123);
                                          QObject::connect(&opt_main, &Option::send_option, &dialog, &Dialog::set_up);
                                          dialog.set_up(db, 123); //also tried this which didn't help either
                                          dialog.setModal(true);
                                          dialog.exec();
                                      }
                                      
                                      jsulmJ 1 Reply Last reply
                                      0
                                      • ? A Former User

                                        @jsulm said in Need help passing a variable to another Form (Signals/Slots):

                                        @SnuggleKat "Change the connect() method as suggestion but the values don't get passed over." - please show the code.
                                        "Should I make QSqlDatabase db and int mode static?" - please don't! Static variables are bad design in most cases.

                                        That's what I thought.

                                        void MainWindow::on_pushButton_open_clicked()
                                        {
                                            opt_main.send_option(db, 123);
                                            QObject::connect(&opt_main, &Option::send_option, &dialog, &Dialog::set_up);
                                            dialog.set_up(db, 123); //also tried this which didn't help either
                                            dialog.setModal(true);
                                            dialog.exec();
                                        }
                                        
                                        jsulmJ Offline
                                        jsulmJ Offline
                                        jsulm
                                        Lifetime Qt Champion
                                        wrote on last edited by
                                        #19

                                        @SnuggleKat I really don't get why you use signals slots here?

                                        void MainWindow::on_pushButton_open_clicked()
                                        {
                                            dialog.set_up(db, 123); //also tried this which didn't help either
                                            dialog.setModal(true);
                                            dialog.exec();
                                        }
                                        

                                        "//also tried this which didn't help either" - please show what dialog.set_up(db, 123) is doing.

                                        https://forum.qt.io/topic/113070/qt-code-of-conduct

                                        ? 1 Reply Last reply
                                        0
                                        • jsulmJ jsulm

                                          @SnuggleKat I really don't get why you use signals slots here?

                                          void MainWindow::on_pushButton_open_clicked()
                                          {
                                              dialog.set_up(db, 123); //also tried this which didn't help either
                                              dialog.setModal(true);
                                              dialog.exec();
                                          }
                                          

                                          "//also tried this which didn't help either" - please show what dialog.set_up(db, 123) is doing.

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

                                          @jsulm
                                          qDebug() shows me that it effectively does nothing. dialog.set_up() does not touch the object declared as opt_dia.

                                          "mode: 12141696 - "
                                          

                                          12141696 seems to be a random value.
                                          This is the qDebug() line:

                                          qDebug() << "mode: " + QString::number(opt_dia.get_mode()) + " - " + opt_dia.get_db().userName();
                                          
                                          jsulmJ 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