Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    168

    [C++] Interfaccia grafica e creazione di grafici

    Buonasera! Ho implementato un'applicazione in C++ utilizzando Eclipse come ambiente di sviluppo.

    Quello che vorrei fare adesso è una semplice interfaccia grafica che mi permetta di passare i parametri di input per far eseguire il mio programma (senza lanciarlo da terminale).

    Il programma fa una serie di calcoli e restituisce dei valori in output. Io vorrei che con questi valori, sempre su interfaccia grafica, venga generato un grafico.

    Leggendo un po' qua e là penso di aver capito che dovrei utilizzare QT per l'interfaccia grafica e gnuplot per i grafici...ma non ho capito in che modo farli interagire tra loro e con la mia applicazione.

    Qualcuno può gentilmente aiutarmi?

  2. #2
    Scriptare gnuplot è una menata (oltre ad essere una menata in generale cercare di fargli fare quello che vuoi tu), tirato in ballo Qt io userei la libreria QCustomPlot, l'ho usata un paio di volte e mi ci sono trovato molto bene.

    Sull'interagire con la tua applicazione, hai due possibilità: o scrivi la GUI come programma separato (in quel caso la GUI sostanzialmente dovrà costruire la linea di comando per il tuo programma e poi lanciarlo), oppure includere direttamente il tuo codice di calcolo all'interno dell'applicazione Qt (cosa che probabilmente viene più comoda, specie visto che devi anche plottare i dati).
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    168
    Intanto grazie per la risposta

    Quindi se non ho capito male mi consiglieresti di utilizzare Qt + QCustomPlot per i grafici?

    Con Qt sto cercando di fare in modo che al click di un pulsante vengano presi i due parametri di input per il mio programma e che questo venga eseguito, ma non ci sto riuscendo

    Per QCustomPlot invece non ho proprio idea di come utilizzarlo...

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    168
    Mi spiego meglio:
    quando viene eseguita l'applicazione appare la finestra in cui sono presenti due TextEdit. In questi l'utente dovrà inserire del testo che sarà l'input per il programma che deve essere eseguito quando viene premuto un pulsante.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    168
    Comunque riesco a leggere ciò che l'utente scrive nei box di testo, ma non so proprio come fare in modo che questi vadano in input al mio programma e come fare in modo che questo venga eseguito.

    Ps: per quanto riguarda il grafico ho fatto in modo che al click di un bottone si apra una nuova finestra. In questa dovrei mostrare il grafico generato a partire dai dati di output del mio programma. In particolare si tratta di un bubble chart.

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    168
    Nessuno che mi dia una mano?

  7. #7
    Quote Originariamente inviata da Dany_ Visualizza il messaggio
    Intanto grazie per la risposta
    Con Qt sto cercando di fare in modo che al click di un pulsante vengano presi i due parametri di input per il mio programma e che questo venga eseguito, ma non ci sto riuscendo
    Devi gestire il signal clicked; comunque non puoi improvvisare dal nulla una conoscenza di Qt, inizia a leggerti un po' degli esempi e della documentazione di base (nello specifico, rispetto al C++ "normale" Qt ha una particolare gestione del lifetime e aggiunge un po' di concetti importanti, tra cui i segnali e gli slot), altrimenti non vai da nessuna parte...
    Per QCustomPlot invece non ho proprio idea di come utilizzarlo...
    Se guardi nella sua documentazione ci sono tanti esempi.
    [QUOTE=Dany_;25296776]Comunque riesco a leggere ciò che l'utente scrive nei box di testo, ma non so proprio come fare in modo che questi vadano in input al mio programma e come fare in modo che questo venga eseguito.
    Usa la classe QProcess per lanciare programmi esterni; ma davvero, probabilmente fai prima a includere i sorgenti del tuo programma e a richiamare direttamente le funzioni che fanno i conti.
    Ps: per quanto riguarda il grafico ho fatto in modo che al click di un bottone si apra una nuova finestra. In questa dovrei mostrare il grafico generato a partire dai dati di output del mio programma. In particolare si tratta di un bubble chart.
    QCustomPlot non supporta direttamente i bubble chart, ma puoi facilmente aggirare il problema creando dei QCPItemEllipse di dimensioni adeguate ancorati nei punti che ti interessano.
    Amaro C++, il gusto pieno dell'undefined behavior.

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    168
    Grazie!

    Sto cercando di creare il mio char *argv[] da passare al programma da eseguire ma ho un po' di difficoltà. Sto facendo così:

    codice:
    QString arg[2];
    QString input1;
    QString input2;
    
    input1=ui->text1->toPlainText();
    input2=ui->text2->toPlainText();
    
    arg[0]=input1;
    arg[1]=input2;
    A questo punto vorrei richiamare la funzione che mi permette l'avvio del programma con questi parametri di input. Dovrei però convertire QString arg[] in un char *argv[]. Non riesco però a farlo...

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    168
    ho aggirato il problema passando alla funzione i due parametri separati invece di un array!

  10. #10
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    168
    Se l'utente inserisce un dato errato ho fatto in modo che venga aperto un MessageBox. Premendo il tasto ok vorrei fare in modo che non venga chiusa l'applicazione, ma che l'utente abbia modo di reinserire il dato e riprovare.
    Come posso fare?

    Ho eliminato la riga di codice exit del mio programma, ma dovrei comunque interrompere l'esecuzione del programma e provare ad inserire un dato corretto...
    Ultima modifica di Dany_; 13-03-2015 a 19:36

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.