¿Cómo pasar Arreglos de un Form a otro?
-
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
-
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
-
@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.
-
@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
-
@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 herevoid Dialog1::on_pushButton_clicked() { Dialog2 *v = new Dialog2(this, curso, numero); close(); v->show(); }
Dialog2.cpp
//your code hereDialog3::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 -
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
-
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