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.8k 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

    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
                                        • ? A Former User

                                          @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 Offline
                                          jsulmJ Offline
                                          jsulm
                                          Lifetime Qt Champion
                                          wrote on last edited by
                                          #21

                                          @SnuggleKat Can you show the content of dialog.set_up(...)?

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

                                          ? 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