2 réponses
Salut,
A priori, tu dois utiliser la fonction setRange(min,max) de la spinbox pour redéfinir son domaine.
Tu peux si tu le souhaites en faire la demande à l'utilisateur avec les fonctions QInputDialog.
prototype :
int getInteger ( QWidget * parent, const QString & title, const QString & label, int value = 0, int minValue = -2147483647, int maxValue = 2147483647, int step = 1, bool * ok = 0, Qt::WindowFlags f = 0 )
min = QInputDialog::getInteger(0,QString("Titre"),QString("Entrer un entier"));
idem pour max.
Ensuite, il faut appeler la fonction redéfinissant le domaine de la spinbox.
spinbox->setRange(min,max);
Je n'ai pas testé mais ca devrait être suffisant. Si ça ne fonctionne pas, il faudra peut être vérifier qu'il n'y ait pas de fonction update() pour actualiser la valeur de la spinbox à l'écran.
Pour connecter les deux spinbox ensemble, tu auras à mon avis besoin d'utiliser des signaux. Je te renvoie à la doc de référence : http://doc.trolltech.com/4.4/signalsandslots.html
Tu devrais écrire quelque chose ressemblant à cela pour les signaux :
connect(spinbox1,SIGNAL(valueChanged(int)),taFenetre,SLOT(maFonction(int)));
Tu appelles ainsi ta fonction (à définir) maFonction(int) qui recoit en paramètre la valeur de la spinbox 1. Tu peux ensuite dans le corps de cette fonction appeler spinbox2->setRange pour faire ce que tu désires. Penses à déclarer cette fonction comme un slot Qt et à générer le moc associé.
J'espère avoir été clair. La doc devrait t'aider.
A +
A priori, tu dois utiliser la fonction setRange(min,max) de la spinbox pour redéfinir son domaine.
Tu peux si tu le souhaites en faire la demande à l'utilisateur avec les fonctions QInputDialog.
prototype :
int getInteger ( QWidget * parent, const QString & title, const QString & label, int value = 0, int minValue = -2147483647, int maxValue = 2147483647, int step = 1, bool * ok = 0, Qt::WindowFlags f = 0 )
min = QInputDialog::getInteger(0,QString("Titre"),QString("Entrer un entier"));
idem pour max.
Ensuite, il faut appeler la fonction redéfinissant le domaine de la spinbox.
spinbox->setRange(min,max);
Je n'ai pas testé mais ca devrait être suffisant. Si ça ne fonctionne pas, il faudra peut être vérifier qu'il n'y ait pas de fonction update() pour actualiser la valeur de la spinbox à l'écran.
Pour connecter les deux spinbox ensemble, tu auras à mon avis besoin d'utiliser des signaux. Je te renvoie à la doc de référence : http://doc.trolltech.com/4.4/signalsandslots.html
Tu devrais écrire quelque chose ressemblant à cela pour les signaux :
connect(spinbox1,SIGNAL(valueChanged(int)),taFenetre,SLOT(maFonction(int)));
Tu appelles ainsi ta fonction (à définir) maFonction(int) qui recoit en paramètre la valeur de la spinbox 1. Tu peux ensuite dans le corps de cette fonction appeler spinbox2->setRange pour faire ce que tu désires. Penses à déclarer cette fonction comme un slot Qt et à générer le moc associé.
J'espère avoir été clair. La doc devrait t'aider.
A +