Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [c++,qt] Variare azione QPushButton al variare dell'input

    Salve a tutti, sto creando un semplice programma in c++ usando le librerie grafiche qt in ambiente linux.

    Ho create un pulsante (QPushButton) che deve o dividere o moltiplicare dei dati immessi dall'utente a seconda che in una ComboBox sia stato selezionate un valore anziché un'altro e restituirli in un'etichetta (label) ma non so come devo fare ed in rete non ho trovato degli esempi.

    Ringrazio per future risposte.

  2. #2
    Nello slot collegato al signal clicked del pushbutton verifica lo stato della combobox (puoi ottenere l'ID dell'elemento selezionato usando il suo metodo currentIndex(), o il testo corrispondente con currentText()); con un if in base a questo scegli l'operazione da fare. Quindi, imposta il testo della label con il suo metodo setText (per convertire il risultato in stringa, la via più rapida probabilmente è QString("%1").arg(valorenumerico)).
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Grazie mille per la risposta, mi hai chiarito le idee.

    Mi sorge ora un altro problema: se io dovessi fare un doppio controllo su due ComboBox e dopo eseguire un'operazione al variare delle due come dovrei fare?

    Es: Dato_utente=13
    ComboBox_1=a
    ComboBox_2=b
    label=13*10

    Dato_utente=42
    ComboBox_1=c
    ComboBox_2=d
    label=42*100

  4. #4
    Al di là del fatto che l'esempio non è per nulla chiaro (né può essere codice compilabile), se vuoi eseguire un'operazione al cambiamento dell'elemento selezionato in una QComboBox ti basta gestire il signal currentIndexChanged. In generale comunque queste sono tutte cose che si trovano sulla documentazione...
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Questa è l' azione del pulsante

    voidMainWindow::on_equi_clicked()
    {if(ui->a=m)//Se la prima ComboBox è uguale a "m" controlla
    {if(ui>a_2=m)//se la seconda ComboBox é ugualea"m"allora scrivi nel label: numero inserito dall' utente*1
    {QString("%1").arg(ui->numero*1);}
    }
    }
    Ultima modifica di ilpinguino89; 02-11-2013 a 18:34

  6. #6
    • = è l'operatore di assegnamento, non di confronto (che è ==);
    • e comunque, ui->a suppongo sia un puntatore a QCheckBox, per leggere il valore in esso contenuto devi richiamare il suo metodo text(); stesso discorso per ui->numero;
    • m non sembra essere una variabile dichiarata da nessuna parte, probabilmente intendevi fare il confronto con la stringa "m"?
    • QString eccetera serve per creare una stringa contenente quel numero lì, non basta per assegnarla alla tua label.


    Seriamente: non puoi programmare a caso in questa maniera, non sperare di realizzare alcunché di funzionante. Lascia stare le Qt per qualche tempo, e inizia prima di tutto ad imparare le basi del C++; poi, dopo che avrai fatto la "gavetta" su applicazioni console e compagnia, potrai iniziare a fare qualcosa con le Qt (sempre prima documentandoti sulla guida e non scrivendo codice a caso).
    Amaro C++, il gusto pieno dell'undefined behavior.

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.