View Full Version : [QT] finestre separate
ho questo main:
#include <QApplication>
#include "A.h"
int main(int argc, char *argv[])
{ QApplication app(argc, argv);
A widgetA;
widgetA.show();
return app.exec();
}
A è una classe che fa comparire una finestra con pulsanti e altro..
io ora vorrei che premendo un certo pulsante in A questo mi faccia scomparire la finestra A e mi apra un'altra finestra B(in cui devo disegnare e mettere altri widget) a cui servono dei valori raccolti in A .. come posso fare? cioè una volta premuto il pulsante in A che devo fare? e nel main cosa bisogna modificare?
AnonimoVeneziano
21-11-2008, 15:53
ho questo main:
#include <QApplication>
#include "A.h"
int main(int argc, char *argv[])
{ QApplication app(argc, argv);
A widgetA;
widgetA.show();
return app.exec();
}
A è una classe che fa comparire una finestra con pulsanti e altro..
io ora vorrei che premendo un certo pulsante in A questo mi faccia scomparire la finestra A e mi apra un'altra finestra B(in cui devo disegnare e mettere altri widget) a cui servono dei valori raccolti in A .. come posso fare? cioè una volta premuto il pulsante in A che devo fare? e nel main cosa bisogna modificare?
Il main non lo devi modificare.
Nel codice del widget A aggiungi una funzione di gestione dell'evento di click del bottone che vuoi che apra la nuova finestra.
Da lì crei la nuova finestra (con new, perchè sennò appena esci dalla funzione se fai un oggetto automatico viene distrutto) e nascondi o distruggi la finestra A.
Ciao
purtroppo il compilatore mi dà un errore...
per connettere il tasto allo slot per creare la nuova finestra uso:
//in A.cpp (nel costruttore)
connect(Tasto,SIGNAL(clicked()),this,SLOT(slotB()));
lo slot per creare la nuova finestra (qui c'è l'errore):
//in A.cpp
//tutti gli altri header
#include "B.h"
#include "A.h"
void A::slotB()
{
B widgetB=new B; //error: initializing temporary from result of `B::B(QWidge
t*)'
widgetB.show();
}
//...
AnonimoVeneziano
21-11-2008, 17:16
purtroppo il compilatore mi dà un errore...
per connettere il tasto allo slot per creare la nuova finestra uso:
//in A.cpp (nel costruttore)
connect(Tasto,SIGNAL(clicked()),this,SLOT(slotB()));
lo slot per creare la nuova finestra (qui c'è l'errore):
//in A.cpp
//tutti gli altri header
#include "B.h"
#include "A.h"
void A::slotB()
{
B widgetB=new B; //error: initializing temporary from result of `B::B(QWidge
t*)'
widgetB.show();
}
//...
Ci credo che ti da errore
Stai assegnando ad un oggetto automatico il valore del puntatore ad un oggetto dinamico (tra l'altro creato con sintassi sbagliata).
La sintassi corretta sarebbe :
B* widgetB = new B();
Ora, formalmente dovresti nascondere A con un "this->hide();" e poi mettere nel distruttore di A una "delete widgetB;" in modo da liberare la memoria occupata da B prima di uscire.
A dire il vero se B è la tua finestra principale e chiuderla significa chiudere anche il programma praticamente te ne puoi fregare.
Ciao
grazie 1000 ora funziona :)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.