Salve ragazzi, mi trovo alle prese con un problema...
A suo tempo avevo creato una piccola applicazione che utilizza un QDialog, adesso mi torna utile "all'interno" di un altra, quindi ho deciso(più per provare che altro), di fare in modo che la mia applicazione sfruttasse la sua QMainWindow e aprisse l'applicazione vecchia.[edit:forse è poco chiaro...in pratica voglio creare un'applicazione stile GIMP, che ha 3 finestre separate...]
Ora però non riesco a capire bene come fare a farle comunicare.Nel senso che a me serve una comunicazione in entrambi i sensi e non solo MainWindow -> Dialog
Perchè il contenuto della MainWindow viene cambiato dall'utente, e io vorrei che la mia vecchia applicazione(che deve lavorare sull'input dell'utente), lavori sui dati "nuovi".
Ho già in mente alcune soluzioni...Anche se non mi piacciono molto.
Ad esempio potrei mettere un pulsante "Update" nella vecchia applicazione e usarlo per emettere un SIGNAL che la MainWindow cattura e far sì che la MainWindow aggiorni i dati del dialog,ma sinceramente penso che all'utente non piacerebbe dover cliccare sempre due pulsanti al posto di 1...
Seconda soluzione che mi è venuta in mente, reimplementare il metodo di slavataggio in modo che ad ogni salvataggio si aggiorni il Dialog, ma così facendo l'utente è costretto a salvare prima di usare i comandi del Dialog.
Terza opzione che mi è venuta in mente mentre scrivo...
Connettere il Dialog ad un segnale della MainWindow a partire dalla MainWindow... visto che il Dialog viene richiamato dalla MainWindow non ho la possibilità di conneterlo alla MainWindow, ma se una volta creato nell'__init__ sella MainWindow io facessi una cosa tipo:
[hlpycode]
class Main(QtGui.QMainWindow):
def __init__(self,parent=None):
[omissis]
self.finestra_dialog = finestra_dialog(opzioni_varie)
self.finestra_dialog.connect(self.QtCore,SIGNAL("invioInfo(QString)"),
self.finestra_dialog.ricevi_testo)
self.connect(self.finestra_dialog,QtCore.SIGNAL("update_Request"),self.invia_update)
def invia_update(self):
data = self.prendiData()
self.emit("invioInfo(QString)",QtCore.QString(data))
[/hlpycode]
Anche se effettivamente quest'ultima non l'ho provata...
Voi come fareste?
Perchè avevo anche pensato ai socket, ma io non li ho mai usati e facendo 2 prove ho visto che si incasina tutto...