View Full Version : [C++] Qt - gestione stdin/stdout
Teo@Unix
07-01-2010, 08:35
Buon dì a tutti,
sto cercando un sistema per associare l'input e l'output standard ad un controllo del tipo dialog. Nel senso, vorrei che questa dialog si comporti come un terminale.
Scopo è realizzare un client che abbia una unica dialog per inviare dei dati ad un server e riceverli.
Utilizzando direttamente la shell non avevo problemi perchè mi bastava utilizzare i comandi di input e output standard, mentre ora con la gui mi trovo un attmo in difficoltà... spero di essere stato chiaro. Vi ringrazio. :)
Buon dì a tutti,
sto cercando un sistema per associare l'input e l'output standard ad un controllo del tipo dialog. Nel senso, vorrei che questa dialog si comporti come un terminale.
Scopo è realizzare un client che abbia una unica dialog per inviare dei dati ad un server e riceverli.
Utilizzando direttamente la shell non avevo problemi perchè mi bastava utilizzare i comandi di input e output standard, mentre ora con la gui mi trovo un attmo in difficoltà... spero di essere stato chiaro. Vi ringrazio. :)
devi usare i segnali e gli slot per interagire non puoi usare direttamente gli stdin e stdout
praticamente ogni oggetto qt ha un insieme di "porte" atte a ricevere messaggi dall'esterno chiamate slot
ogni oggetto ha anche la possibilità di emettere dei segnali volti a interagire con gli altri oggetti.
quindi
devi definire gli slot e i segnali che ti servono
devi connettere i segnali con gli slot
devi interagire con gli oggetti passando attraverso i segnali
Teo@Unix
07-01-2010, 12:49
devi usare i segnali e gli slot per interagire non puoi usare direttamente gli stdin e stdout
praticamente ogni oggetto qt ha un insieme di "porte" atte a ricevere messaggi dall'esterno chiamate slot
ogni oggetto ha anche la possibilità di emettere dei segnali volti a interagire con gli altri oggetti.
questo ok.
Per gestire I/O multiplexing utilizzavo select() in Linux, non ho ancora guardato ma dovrei poterlo usare ancora, forse c'è anche una classe che lo fa...
siccome su questo "terminale" dovranno essere dati una serie di comandi...
come posso fare secondo te a fare in modo che alla pressione del tasto invio sia solo l'ultima riga ad essere inviata all'host remoto?
Perchè utilizzando in modo standard il controllo PlainText ad esempio, mi invierebbe tutto (anche i dati precedenti)...
è bene usare un buffer con un file descriptor? Però non saprei come... nel senso, l'utente dovrebbe anche poter vedere quello che scrive....
non mi sembra di aver visto esempi di questo tipo purtroppo... un esempio mi basterebbe per capire...
Grazie.
questo ok.
Per gestire I/O multiplexing utilizzavo select() in Linux, non ho ancora guardato ma dovrei poterlo usare ancora, forse c'è anche una classe che lo fa...
siccome su questo "terminale" dovranno essere dati una serie di comandi...
come posso fare secondo te a fare in modo che alla pressione del tasto invio sia solo l'ultima riga ad essere inviata all'host remoto?
Perchè utilizzando in modo standard il controllo PlainText ad esempio, mi invierebbe tutto (anche i dati precedenti)...
è bene usare un buffer con un file descriptor? Però non saprei come... nel senso, l'utente dovrebbe anche poter vedere quello che scrive....
non mi sembra di aver visto esempi di questo tipo purtroppo... un esempio mi basterebbe per capire...
Grazie.
scusa
puoi scriverti i tuoi segnali e i tuoi slot quindi puoi decidere cosa inviare direttamente scrivendo la funzione
Teo@Unix
07-01-2010, 14:14
scusa
ma va perchè?
quello che mi verrebbe spontaneo fare è avere i due fd, uno associato al socket l'altro a questo punto associato ad un buffer....
il punto è... come posso far visualizzare allo stesso tempo ciò che viene scritto sulla dialog e inserirlo nel buffer..... è probabile anche che sia una cosa banale... ma non mi viene in mente come fare.... accipicchia:stordita:
ma va perchè?
quello che mi verrebbe spontaneo fare è avere i due fd, uno associato al socket l'altro a questo punto associato ad un buffer....
il punto è... come posso far visualizzare allo stesso tempo ciò che viene scritto sulla dialog e inserirlo nel buffer..... è probabile anche che sia una cosa banale... ma non mi viene in mente come fare.... accipicchia:stordita:
io userei 2 widget separati uno sopra l'altro con una qlineedit per gestire l'ultima riga
oppure guarda un qtextedit
più specifico non so, non ho ben capito cosa devi fare
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.