Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Spanish
  4. ¿Cómo pasar Arreglos de un Form a otro?
Forum Updated to NodeBB v4.3 + New Features

¿Cómo pasar Arreglos de un Form a otro?

Scheduled Pinned Locked Moved Solved Spanish
17 Posts 2 Posters 7.4k Views
  • 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.
  • juankiJ Offline
    juankiJ Offline
    juanki
    Moderators
    wrote on last edited by
    #6

    Joder, hoy debo estar más tonto que de costumbre, sigo sin ver el array por ninguna parte.

    Por cierto, imagino que sabes que el método close() NO destruye la ventana, solo la oculta, a no ser que uses el flag Qt::WA_DeleteOnClose:

    http://doc.qt.io/qt-5/qwidget.html#close

    Intenta explicar el problema lo más claro y detallado posible. Adjunta los errores y el código que creas da el error.
    Procura escribir correctamente y sin faltas de ortografía.

    Si la duda se solucionó, por favor, marca el tema como 'solucionado'.

    E 1 Reply Last reply
    0
    • juankiJ juanki

      Joder, hoy debo estar más tonto que de costumbre, sigo sin ver el array por ninguna parte.

      Por cierto, imagino que sabes que el método close() NO destruye la ventana, solo la oculta, a no ser que uses el flag Qt::WA_DeleteOnClose:

      http://doc.qt.io/qt-5/qwidget.html#close

      E Offline
      E Offline
      Eduardo12l
      wrote on last edited by Eduardo12l
      #7

      @juanki Sé lo del Close, pero lo que no se es como convertir cualquiera de las variables (osea en este caso el numero ) a arreglo y qeu funcione

      juankiJ 1 Reply Last reply
      0
      • E Eduardo12l

        @juanki Sé lo del Close, pero lo que no se es como convertir cualquiera de las variables (osea en este caso el numero ) a arreglo y qeu funcione

        juankiJ Offline
        juankiJ Offline
        juanki
        Moderators
        wrote on last edited by
        #8

        Hola

        Y ¿para qué quieres convertir UNA variable en un arreglo? no tiene sentido, tendrías un arreglo de UNA posición. ¿No es mejor tener esa variable y listo?

        Un saludo

        Intenta explicar el problema lo más claro y detallado posible. Adjunta los errores y el código que creas da el error.
        Procura escribir correctamente y sin faltas de ortografía.

        Si la duda se solucionó, por favor, marca el tema como 'solucionado'.

        E 1 Reply Last reply
        0
        • juankiJ juanki

          Hola

          Y ¿para qué quieres convertir UNA variable en un arreglo? no tiene sentido, tendrías un arreglo de UNA posición. ¿No es mejor tener esa variable y listo?

          Un saludo

          E Offline
          E Offline
          Eduardo12l
          wrote on last edited by
          #9

          @juanki Porque quiero pasar muchos más valores y seria más facil si hubiera un arreglo a estar declarando varias variables con diferentes nombres que van a hacer a mi codigo enorme y horrible.

          1 Reply Last reply
          0
          • juankiJ Offline
            juankiJ Offline
            juanki
            Moderators
            wrote on last edited by
            #10

            Hola

            Meter varias variables en un array puede ser un lio tremendo si dichas variables no guardan relación entre sí:

            	int num = 3;
            	int otra = 5;
            	int otra_mas = 28;
            	
            	int array[3];
            	array[0] = num;
            	array[1] = otra;
            	array[2] = otra_mas;
            

            Ya están en un array, el problema es que tienes que recordar en qué posición pusiste cada una y el lío en el código puede ser tremendo y resultaría en errores difíciles de encontrar.

            Un saludo

            Intenta explicar el problema lo más claro y detallado posible. Adjunta los errores y el código que creas da el error.
            Procura escribir correctamente y sin faltas de ortografía.

            Si la duda se solucionó, por favor, marca el tema como 'solucionado'.

            E 1 Reply Last reply
            0
            • juankiJ juanki

              Hola

              Meter varias variables en un array puede ser un lio tremendo si dichas variables no guardan relación entre sí:

              	int num = 3;
              	int otra = 5;
              	int otra_mas = 28;
              	
              	int array[3];
              	array[0] = num;
              	array[1] = otra;
              	array[2] = otra_mas;
              

              Ya están en un array, el problema es que tienes que recordar en qué posición pusiste cada una y el lío en el código puede ser tremendo y resultaría en errores difíciles de encontrar.

              Un saludo

              E Offline
              E Offline
              Eduardo12l
              wrote on last edited by
              #11

              @juanki Ok pero sí guardan relación entre si, pero solo quería saber como pasar de una ventana a otra Arrays. Si ahora no me sirviese tal vez podria utilizarlo en otra oportunidad. Me han dicho que trate las ventanas como si fueran clases del main() pero no me parece que tenga mucho sentido.

              juankiJ 1 Reply Last reply
              0
              • E Eduardo12l

                @juanki Ok pero sí guardan relación entre si, pero solo quería saber como pasar de una ventana a otra Arrays. Si ahora no me sirviese tal vez podria utilizarlo en otra oportunidad. Me han dicho que trate las ventanas como si fueran clases del main() pero no me parece que tenga mucho sentido.

                juankiJ Offline
                juankiJ Offline
                juanki
                Moderators
                wrote on last edited by
                #12

                @Eduardo12l said in ¿Cómo pasar Arreglos de un Form a otro?:

                Ok pero sí guardan relación entre si, pero solo quería saber como pasar de una ventana a otra Arrays.

                Pues como cualquier otro parámetro, por ejemplo, el nombre del array en realidad es un puntero al primer elemento, así que puedes declarar el parámetro en el método que la recibe como un puntero. Tendrías que enviarle también como un segundo parámetro la dimensión del array, si no, no tendrías forma de saberlo, o usar una constante en la clase para guardar ese tamaño o algo así.

                Me han dicho que trate las ventanas como si fueran clases del main() pero no me parece que tenga mucho sentido.

                ¿Te refieres a crear todas las ventanas en el método main? Personalmente no lo hago así y no me gusta la idea, ten en cuenta cada una que crees va a ocupar memoria y si tu programa tiene varias, pues imagínate el gasto, para que después el usuario no las abra.

                Además, como accederías a ellas cuando tienes que mostrarlas, ¿las pasas todas como parámetros?

                Yo las voy creando/destruyendo según se van necesitando.

                ¿Entiendo por tus preguntas que estás empezando en esto de la programación?

                Un saludo

                Intenta explicar el problema lo más claro y detallado posible. Adjunta los errores y el código que creas da el error.
                Procura escribir correctamente y sin faltas de ortografía.

                Si la duda se solucionó, por favor, marca el tema como 'solucionado'.

                E 1 Reply Last reply
                0
                • juankiJ juanki

                  @Eduardo12l said in ¿Cómo pasar Arreglos de un Form a otro?:

                  Ok pero sí guardan relación entre si, pero solo quería saber como pasar de una ventana a otra Arrays.

                  Pues como cualquier otro parámetro, por ejemplo, el nombre del array en realidad es un puntero al primer elemento, así que puedes declarar el parámetro en el método que la recibe como un puntero. Tendrías que enviarle también como un segundo parámetro la dimensión del array, si no, no tendrías forma de saberlo, o usar una constante en la clase para guardar ese tamaño o algo así.

                  Me han dicho que trate las ventanas como si fueran clases del main() pero no me parece que tenga mucho sentido.

                  ¿Te refieres a crear todas las ventanas en el método main? Personalmente no lo hago así y no me gusta la idea, ten en cuenta cada una que crees va a ocupar memoria y si tu programa tiene varias, pues imagínate el gasto, para que después el usuario no las abra.

                  Además, como accederías a ellas cuando tienes que mostrarlas, ¿las pasas todas como parámetros?

                  Yo las voy creando/destruyendo según se van necesitando.

                  ¿Entiendo por tus preguntas que estás empezando en esto de la programación?

                  Un saludo

                  E Offline
                  E Offline
                  Eduardo12l
                  wrote on last edited by Eduardo12l
                  #13

                  @juanki ```

                  Dialog1.h

                  public:
                  
                  explicit Dialog1(QWidget *parent = 0);
                      Dialog1(QWidget *parent = 0, int var = 0);
                      ~Dialog1();
                      QString curso;
                      int numero[10];
                      int cont;
                  
                  

                  Dialog 2.h

                  public:
                      explicit Dialog2(QWidget *parent = 0);
                      Dialog2(QWidget *parent = 0, const QString curso = "", const int *numero = 0);
                      int n = 0;
                  
                      ~Dialog2();
                  ...
                  private:
                  
                      int numero[10];
                      Ui::Dialog2 *ui;
                  

                  Dialog1.cpp
                  //your code here

                  void Dialog1::on_pushButton_clicked()
                  {
                      Dialog2 *v = new Dialog2(this, curso, numero);
                      close();
                      v->show();
                  }
                  
                  

                  Dialog2.cpp
                  //your code here

                  Dialog3::Dialog3(QWidget *parent, const int *numero) :
                      QDialog(parent),
                      ui(new Ui::Dialog3), numero(*numero) // Aqui me da error C2075 'la inicializacion de la matriz requiere una lista de inicializadores entre llaves'
                  {
                  

                  De todas maneras no funciona me sale ahora un solo error el C2075 pero no entiendo eso de incializarlo.
                  Bueno soy nuevo C++. Trato de convertir numero en vector o arreglo de una sola fila pero no me sale

                  1 Reply Last reply
                  0
                  • juankiJ Offline
                    juankiJ Offline
                    juanki
                    Moderators
                    wrote on last edited by
                    #14

                    Hola

                    Bueno, yo creo que la solución más fácil sería que dentro de Dialog2 declares la variable numero como un puntero en vez de como un array. El nombre de un array en realidad es un puntero a su primer elemento, así, cuando en Dialog1 creas la ventana Dialog2 ya le estás pasando un puntero al primer elemento del array. Personalmente es lo que hago, no soy ningún experto ni nada, pero creo que sería lo más fácil.

                    Si estás empezando con C++ te recomiendo que te pongas a aprender bien C++ y la programación orientada a objetos antes de meterte con Qt, si no tienes una buena base puedes complicarte mucho y dificultarte avanzar.

                    Un saludo

                    Intenta explicar el problema lo más claro y detallado posible. Adjunta los errores y el código que creas da el error.
                    Procura escribir correctamente y sin faltas de ortografía.

                    Si la duda se solucionó, por favor, marca el tema como 'solucionado'.

                    E 1 Reply Last reply
                    0
                    • juankiJ juanki

                      Hola

                      Bueno, yo creo que la solución más fácil sería que dentro de Dialog2 declares la variable numero como un puntero en vez de como un array. El nombre de un array en realidad es un puntero a su primer elemento, así, cuando en Dialog1 creas la ventana Dialog2 ya le estás pasando un puntero al primer elemento del array. Personalmente es lo que hago, no soy ningún experto ni nada, pero creo que sería lo más fácil.

                      Si estás empezando con C++ te recomiendo que te pongas a aprender bien C++ y la programación orientada a objetos antes de meterte con Qt, si no tienes una buena base puedes complicarte mucho y dificultarte avanzar.

                      Un saludo

                      E Offline
                      E Offline
                      Eduardo12l
                      wrote on last edited by
                      #15

                      @juanki Tampoco funciona, ¿Conoces algun metodo para pasar de una sola varias variables?

                      1 Reply Last reply
                      0
                      • juankiJ Offline
                        juankiJ Offline
                        juanki
                        Moderators
                        wrote on last edited by juanki
                        #16

                        Como que no funciona. si tu declaras en el dialogo2 un puntero:

                        int *arrayNumeros;
                        

                        Y en el constructor le pasas el array:

                        Dialog2::Dialog2(int *numeros, QWidget *parent): QDialog(parent), ui(new Ui::Dialog2), arrayNumeros(numeros)

                        Seguro que ésto te imprime todos los números del array:

                        for(int i = 0; i < longitud_array; i++)
                            qDebug() << i << ": " << *(arrayNumeros + i);
                        

                        Como te dije, te recomiendo que te pongas con C++ antes de meterte con Qt.

                        Un saludo

                        Intenta explicar el problema lo más claro y detallado posible. Adjunta los errores y el código que creas da el error.
                        Procura escribir correctamente y sin faltas de ortografía.

                        Si la duda se solucionó, por favor, marca el tema como 'solucionado'.

                        E 1 Reply Last reply
                        0
                        • juankiJ juanki

                          Como que no funciona. si tu declaras en el dialogo2 un puntero:

                          int *arrayNumeros;
                          

                          Y en el constructor le pasas el array:

                          Dialog2::Dialog2(int *numeros, QWidget *parent): QDialog(parent), ui(new Ui::Dialog2), arrayNumeros(numeros)

                          Seguro que ésto te imprime todos los números del array:

                          for(int i = 0; i < longitud_array; i++)
                              qDebug() << i << ": " << *(arrayNumeros + i);
                          

                          Como te dije, te recomiendo que te pongas con C++ antes de meterte con Qt.

                          Un saludo

                          E Offline
                          E Offline
                          Eduardo12l
                          wrote on last edited by
                          #17

                          @juanki De todas maneras gracias por tu ayuda, he creado otro post en C++ Guru y ya creo que he logrado resolver el problema usando QVectors

                          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