QT - Usar variables globales en QT C++

 
Vista:
sin imagen de perfil

Usar variables globales en QT C++

Publicado por Jose Romero (12 intervenciones) el 04/03/2016 16:15:12
En Vb.Net podia crear un modulo y las variables que creaba alli la podia usar en cualquier parte del proyecto, como puedo hacer lo mismo en qt? Necesito devolver el valor de un dialog al main.cpp como lo haria??
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 96
Oro
Ha mantenido su posición en QT (en relación al último mes)
Gráfica de QT

Usar variables globales en QT C++

Publicado por juanki (102 intervenciones) el 04/03/2016 22:40:30
Hola

En C++, y por lo tanto en Qt, también hay variables globales.

Lo que quieres hacer depende de cómo lo tengas hecho, por ejemplo ¿Ese dialog se crea en main? Si es así, no necesitas variables globales. También puedes considerar el uso de señales/slots.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Usar variables globales en QT C++

Publicado por Jose Romero (12 intervenciones) el 05/03/2016 00:46:11
Si bueno, es para logearse yo queria crear una funcion de verificacion en cual se comprobaba la autentificacion de usuario y el resultado lo podria colocar en una variable bool, si el usuario y contraseña es correcto entonces me abre el formulario de menu principal

**********************main.cpp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
bool Verificar(){
   int Correcto;
    Dialog_Login *w = new Dialog_Login;
    w->show();
 
 
bool retornar=false;
 
 
 
    if (Correcto = 0){
        retornar=true;
    }
    else
    {
        retornar=false;
    }
 
    return retornar;
}
 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
 
 
 
    if (Verificar())
    {
 
        FRM_MENUPRINCIPAL *w = new  FRM_MENUPRINCIPAL;
        w->show();
    }
    else
    {
 
    }
    return a.exec();
}


***************************en Dialog_Login.cpp

1
2
3
4
5
6
7
void Dialog_Login::on_pushButton_clicked()
{
 
Correcto=0;
 
    this->close();
}


No se si esta forma de hacerlo es correcto, No estoy acostumbrado a usar C++
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 96
Oro
Ha mantenido su posición en QT (en relación al último mes)
Gráfica de QT

Usar variables globales en QT C++

Publicado por juanki (102 intervenciones) el 05/03/2016 19:06:54
Hola

Para que funcione de la forma que lo estás haciendo, necesitas que Correcto sea una variable global, busca en google "variables globales en c" y vas a encontrar mejores explicaciones de las que yo pueda darte.

Aunque yo te propongo otra forma y es "aprovechar" las características de Qt. Imagino que has mirado la documentación, si no es así, deberías hacerlos. Verás que, aparte de show, la clase QDialog tiene otro método, exec, que, además, retorna un entero. Puedes mostrar la ventana con exec y aprovechar el valor de retorno para saber si el usuario se logeó correctamente o no.

Se suelen usar dos constantes definidas en Qt:
http://doc.qt.io/qt-5/qdialog.html#DialogCode-enum

Tu puedes cerrar la ventana con accept si el usuario se loguea correctamente y con reject en caso contrario.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Usar variables globales en QT C++

Publicado por martin albarenque (1 intervención) el 30/03/2019 19:22:23
Hola, soy programador amateur.
En vb6 yo usaba un archivo .bas, en qt agregue un .h (intercambio.h)
Y para acceder a esa variable desde un formulario se antepone :: (dos puntos)

A la solucion la encontré aqui

http://c.conclase.net/curso/?cap=006

1
2
3
4
5
6
7
8
9
10
int x; // Variable global
 
int main()
{
   int x; // Variable local que enmascara a la global
 
   x = 10; // Accedemos a la variable local
   ::x = 100; // Mediante el operador de ámbito accedemos a la global
   return 0;
}

Ojala le sirva a alguien más.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar