|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Dec 2007
Messaggi: 113
|
[QT] finestre separate
ho questo main:
Codice:
#include <QApplication> #include "A.h" int main(int argc, char *argv[]) { QApplication app(argc, argv); A widgetA; widgetA.show(); return app.exec(); } 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? |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13826
|
Quote:
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
__________________
GPU Compiler Engineer |
|
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Dec 2007
Messaggi: 113
|
purtroppo il compilatore mi dà un errore...
per connettere il tasto allo slot per creare la nuova finestra uso: Codice:
//in A.cpp (nel costruttore) connect(Tasto,SIGNAL(clicked()),this,SLOT(slotB())); Codice:
//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(); } //... Ultima modifica di doomer : 21-11-2008 alle 17:08. |
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13826
|
Quote:
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
__________________
GPU Compiler Engineer |
|
![]() |
![]() |
![]() |
#5 |
Member
Iscritto dal: Dec 2007
Messaggi: 113
|
grazie 1000 ora funziona
![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 01:42.