Scrivere su widget presenti su schermata di altro modulo
-
Buongiorno.
Non vi sarete mica preoccupati se non avevo ancora scritto, vero ? Ecco il problema di oggi.
Ho una applicazione col suo form generato con Qt Creator che, fra altre cose, ha un pulsante per avviare una seconda classe.
Se in questa seconda classe volessi scrivere su un widget ui della classe principale, qual è la sintassi da utilizzare ?
Ho provato inserendo nella seconda classe un'istruzione tipo questa: PrimaClasse::ui->widgetmio->setText("xxx"); ma fa errore di compilazione per uso non valido del membro...
Qualche idea ? Grazie.
bvox -
Il design dei programmi C++ e in particolare in Qt e' a cascata cioe' se A crea B, B non sa e non deve sapere dell'esistenza di A (https://en.wikipedia.org/wiki/SOLID_(object-oriented_design))
nel tuo caso SecondaClasse dovrebbe emettere un
signal
che comunica all'esterno il valore da cambiare poi PrimaClasse lo raccoglie e lo usa come vuole (chamasetText()
per esempio) -
Mi sa che ho immaginato un'impostazione sbagliata.
PrimaClasse è la classe principale col suo form ui e tanti widgets nel form. Vuoi dire che per fare in modo che altre classi per valorizzare uno di quei widgets deve fare quelle strane cose con l'uso dei connect ? Non potrei magari creare tante function all'interno di PrimaClasse ognuna per poter assegnare un valore ad un particolare widget e poi poter richiamare questa function dall'esterno ? Possibile che non ci sia un metodo più semplice, magari con l'uso di "parent" per poter ascendere alla classe principale e poi scrivere su un suo widget ? -
Di nuovo, tutto si puo' fare (
qobject_cast<PrimaClasse>(parent())
e' un esempio) ma questo non significa che tu lo debba fare. Sul serio, nel lungo periodo quel design ti torna a colpire alle spalle. crea i sub widget che siano indipendenti in questo modo li puoi usare in contesti differenti -
Ma io contavo di fare proprio una cosa del genere.
Un form ui di una classe e poi tante altre classi che valorizzano in modo opportuno i widgets di quel form. Mi faresti, per favore, un esempio (o un link dove possa vederlo, possibilmente in italiano) dell'uso dei sub widgets che dici tu ? Altra cosa fuori tema: come fai a far apparire in rosso il fac-simile delle istruzioni ? -
@bvox123 said in Scrivere su widget presenti su schermata di altro modulo:
Mi faresti, per favore, un esempio (o un link dove possa vederlo
http://doc.qt.io/qt-5/qtwidgets-widgets-calculator-example.html
@bvox123 said in Scrivere su widget presenti su schermata di altro modulo:
come fai a far apparire in rosso il fac-simile delle istruzioni ?
e' il carattere ` non c'e' nella tastiera italiana purtroppo, e' sotto all'esc nella tastiera UK/US