PDA

Visualizza la versione completa : [c++,qt] Variare azione QPushButton al variare dell'input


ilpinguino89
01-11-2013, 22:38
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.

MItaly
02-11-2013, 04:59
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)).

ilpinguino89
02-11-2013, 10:31
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

MItaly
02-11-2013, 17:31
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...

ilpinguino89
02-11-2013, 17:31
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);}
}
}

MItaly
02-11-2013, 17:57
= è 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).

Loading