Gambas France BETA


Pas de compte ? Incription

SpinBox Affichage Propriété Text

Ce sujet est résolu.

1
AuteurMessages
Fly06#1 Posté le 11/3/2013 à 11:32:31
Bonjour à Tous !

Le contrôle de type SpinBox ne semble pas gérer autre chose que des entiers au niveau de sa propriété Value. C'est en tout cas la conclusion de cette discussion :

http://www.gambasforge.org/sujet-4132-valeur-dincrementation-d-une-spinbox-page-1.html#m1

Quant à la propriété Text elle est en lecture seule.

Je trouve étrange que ce contrôle soit aussi restrictif.

Ne serait-il pas possible de définir un mapping entre les valeurs admissibles pour la propriété Value et les valeurs correspondantes pour la propriété Text ?

PS : J'ai vainement essayé de définir ce mapping avec la propriété Action mais sans succès
Prokopy#2 Posté le 11/3/2013 à 21:27:35
Kinder PinguiSalut Fly06,

En effet, la Spinbox de Gambas ne permet d'avoir que des entiers dans ta Spinbox, sans doute parce que la librairie Qt ne permettait que ça (comme le dit la discussion que tu as mentionnée).
Ceci dit, il a été ajouté à Qt un Spinbox conçu pour permettre de saisir des valeurs flottantes également : QDoubleSpinbox. Ce serait peut-être une bonne idée de proposer à Benoît de l'utiliser dans Gambas, via la mailing-list. :)

Ne serait-il pas possible de définir un mapping entre les valeurs admissibles pour la propriété Value et les valeurs correspondantes pour la propriété Text ?


Je n'ai pas bien compris ce que tu désires faire, car si j'ai bien compris la documentation, la propriété Text est identique à la propriété Value, sauf qu'elle retourne une chaîne, c'est bien ça ?
La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique, rien ne fonctionne et on ne sait pas pourquoi.
Fly06#3 Posté le 12/3/2013 à 08:16:16
Bonjour Prokopy,

Je n'ai pas bien compris ce que tu désires faire, car si j'ai bien compris la documentation, la propriété Text est identique à la propriété Value, sauf qu'elle retourne une chaîne, c'est bien ça ?

Par défaut ces deux propriétés ont les mêmes valeurs au type près. Je suis partie de l'idée qu'il devait y avoir un moyen de gérer la propriété Text (valeur externe visible) via une table entre les valeurs possibles pour la propriété Value (valeur interne) et les valeurs correspondantes de la propriété Text. J'ai cru un moment que la propriété Action pouvait servir à créer ce mapping mais faute de documentation explicite à ce sujet, je n'ai pas pu aller bien loin sans savoir d'ailleurs avec certitude si c'est une idée farfelue ou pas.

Je vais faire sans et utiliser d'autres contrôles (ComboBox et MaskBox probablement).

Merci beaucoup pour ta réponse.
Fly06#4 Posté le 14/3/2013 à 13:41:08
Au sujet des MaskBox j'aimerais savoir si il est possible de saisir des masks composites du type :

Mask = Mask1 OU Mask2 OU Mask3

?
Prokopy#5 Posté le 15/3/2013 à 09:35:58
Kinder PinguiIl ne me semble pas (enfin pas comme ça), mais en fonction des masques que tu veux composer ça peut se faire au cas par cas (la syntaxe est assez puissante tout de même).

Est-ce que tu peux préciser quels masques tu désires combiner ?
La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique, rien ne fonctionne et on ne sait pas pourquoi.
Fly06#6 Posté le 15/3/2013 à 12:16:30
Est-ce que tu peux préciser quels masques tu désires combiner ?

Si je souhaite que ma MaskBox n'accepte que les valeurs décimales 0.00, 0.01, 0.02 et ainsi de suite jusqu'à 0.99, je peux utiliser le mask :

Mask = [0],00

Mais si je souhaite supprimer la valeur 0.00 des valeurs possibles, je ne vois pas comment ecrire le mask unique correspondant.

Par contre, le mask composite suivant fait l'affaire :

Mask = [0],[1-9]0 OU [0],0[1-9]

Merci.

Fly06#7 Posté le 16/3/2013 à 10:10:04
@Prokopy:
Ceci dit, il a été ajouté à Qt un Spinbox conçu pour permettre de saisir des valeurs flottantes également : QDoubleSpinbox.

En allant sur le site du projet Qt via ton lien, j'ai retrouvé la doc du gadget SpinBox de base :
http://qt-project.org/doc/qt-4.8/qspinbox.html#details

On peut y lire notamment :
The spin box supports integer values but can be extended to use different strings with validate(), textFromValue() and valueFromText().

Un exemple est même donné plus bas pour gérer des tailles d'images (16*16, 32*32, etc) avec une SpinBox en surchargeant les méthodes textFromValue() and valueFromText() pour réaliser le mapping dont je parle dans mon premier post.

Est-il envisageable (dans Gambas) de créer un contrôle custom qui hériterait du contrôle natif SpinBox et de surcharger ces deux méthodes ?
Fly06#8 Posté le 25/3/2013 à 14:17:41
Pour info, je viens de soumettre le problème sur le forum officiel :
http://gambas.8142.n7.nabble.com/SpinBox-Entiers-Seulement-td41465.html

Je laisse cette file ouverte pour assurer le suivi.
Fly06#9 Posté le 30/3/2013 à 09:16:43
Donc pour clore ce topic, les méthodes textFromValue() and valueFromText() de la SpinBox (Qt) n'ont pas d'équivalents sous Gambas.

http://gambas.8142.n7.nabble.com/SpinBox-Entiers-Seulement-tt41465.html#a41466

Problème résolu.
1