Je travaille sur Qt 4.8.5. J'utilise une structure QWizard avec ses QWizardPages (nommez-les wp1, wp2, wp3, ...). J'ai besoin de passer une valeur de wp2 à wp4 mais chaque fois que je l'essaie, je reçois une chaîne vide :( La valeur dont j'ai besoin est sur une variable (QString sVar;) donc pas un widget et j'ai essayé certaines choses:Qt: Comment passer la valeur variable entre QWizardPages et registerField()
- en utilisant RegisterField avec les itselfs de wizardpage (comme toujours un type de QWidget) comme ceci:
registerField("myField",this);
mais ofcourse quand je vais à GT4 et essayer deqDebug()<< "data: " << field("myField").toString();
est vide - J'ai vu dans certains forums. ppl disant que vous pouvez créer un Q_PROPERTY et ensuite utiliser le champ de registre.Je l'ai mis comme
Q_PROPERTY sData READ getData() WRITE setDATA()
puis avecregisterField("myfield, this, ...
et ici j'ai un problème parce que je m'attends à ce que sData apparaisse mais ce n'est pas le cas
Donc ... une idée sur la façon dont je peux y parvenir en utilisant registerField (je sais que je peux aussi créer mon propre slot et signal, l'émettre de wp2 et le rattraper sur wp4 mais je voudrais l'éviter si possible)
Ajouté la solution:
classe Ah:
class ClassA: public QWizardPage
{
Q_OBJECT
Q_PROPERTY(QString sAP READ getAP WRITE setAP)
....
public:
QString getAP() const {return AP;}
void setAP(QString s){AP=s;};
private:
QString AP;
classe A constructeur:
registerField("AP_field",this, "sAP", SIGNAL(APChanged()));
classe A :: fonction initializePage():
switch(m_iVar)
{
case 0 :...
break;
case 1:
setAP("AP1");
emit APChanged();
break;
}
Et puis dans la classe B (où vous avez besoin de savoir que les données):
qDebug() << " AP QPROPERTY = " <<field ("AP_Field").toString();
Merci! Je n'ai pas vu cette partie !! – Megasa3