TXSLib : Class TMeter
La classe TMeter est un widget affichant une donnée numérique scalaire sous la forme d'un galvanomètre
Cette classe d'objet est compatible avec son utllisation sur un afficheur LCD. Voir la rubrique : LCD 7789 avec Qt
Ci-dessous des exemples d'objets de la classe TMeter ainsi que le code utilisé pour configurer ces objets.

{
// On donne au knob une taille fixe
m_pFullMeter->setFixedSize(240,240);
// C'est un widget encombrant.... On se fait de la place....
m_pFullMeter->SetCaptionVisible(false);
m_pFullMeter->SetNumericIndicatorVisible(false);
// Pas de bord
m_pFullMeter->SetBorderStyle(TXS::NoFrame);
// Réglage du look de l'aiguille
m_pFullMeter->SetNeedleBaseRadius(15);
m_pFullMeter->SetNeedleStyle(TXS::NeedleStyle_0);
m_pFullMeter->SetNeedleThickness(3);
m_pFullMeter->SetNeedleColor("Blue");
// Réduction de la taille des graduations
QFont fnt = m_pFullMeter->GetScaleLabelsFont();
fnt.setPixelSize(8);
m_pFullMeter->SetScaleLabelsFont(fnt);
// On peut ajuster la zone d'affichage des zones de couleurs
m_pFullMeter->SetAutoAdjustColorZonesLeds(false);
m_pFullMeter->SetColorZonesBlocks(50);
m_pFullMeter->SetColorZonesThickness(8);
m_pFullMeter->SetColorZonesBlocksWidth(8);
// Les leds éteintes sont grises
m_pFullMeter->SetDefaultColorZonesLedsColorAboveCursor(QColor("DimGrey"));
// Colors
m_pFullMeter->AppendColorZone(0, 25,QColor("MediumBlue"));
m_pFullMeter->AppendColorZone(25, 50 ,QColor("LawnGreen"));
m_pFullMeter->AppendColorZone(50, 75 ,QColor("Gold"));
m_pFullMeter->AppendColorZone(75, 100 ,QColor("Crimson"));
}
void Dialog::AdjustQuarterMeter()
{
// On donne au knob une taille fixe
m_pQuarterMeter->setFixedSize(240,240);
// L'origine et l'excursion définissent la forme du cadran du galvanomètre
// Mais il faut lui interdire d'être toujours circulaire
m_pQuarterMeter->SetScaleExcursion(10, 70);
m_pQuarterMeter->SetAlwaysCircular(false);
m_pQuarterMeter->SetAlwaysCentered(false);
// Réglage du look de l'aiguille
m_pQuarterMeter->SetNeedleBaseRadius(15);
m_pQuarterMeter->SetNeedleBaseStyle(TXS::NeedleBaseStyle_6);
m_pQuarterMeter->SetNeedleStyle(TXS::NeedleStyle_2);
// C'est un widget encombrant.... On se fait de la place....
m_pQuarterMeter->SetCaptionVisible(false);
m_pQuarterMeter->SetNumericIndicatorVisible(false);
// Réduction de la taille des graduations
QFont fnt = m_pQuarterMeter->GetScaleLabelsFont();
fnt.setPixelSize(8);
m_pQuarterMeter->SetScaleLabelsFont(fnt);
// On peut ajuster la zone d'affichage des zones de couleurs
m_pQuarterMeter->SetColorZonesStyle(TXS::KnobColorZonesStyle_Continuous);
m_pQuarterMeter->SetColorZonesThickness(12);
// Colors
m_pQuarterMeter->AppendColorZone(0, 25,QColor("MediumBlue"));
m_pQuarterMeter->AppendColorZone(50, 75 ,QColor("Gold"));
m_pQuarterMeter->AppendColorZone(25, 50 ,QColor("LawnGreen"));
m_pQuarterMeter->AppendColorZone(75, 100 ,QColor("Crimson"));
}
void Dialog::Adjust3QuarterMeter()
{
// On donne au knob une taille fixe
m_p3QuarterMeter->setFixedSize(240,240);
// L'origine et l'excursion définissent la forme du cadran du galvanomètre
// Mais il faut lui interdire d'être toujours circulaire
m_p3QuarterMeter->SetScaleExcursion(10, 250);
m_p3QuarterMeter->SetAlwaysCircular(false);
m_p3QuarterMeter->SetAlwaysCentered(true);
// C'est un widget encombrant.... On se fait de la place....
m_p3QuarterMeter->SetCaptionVisible(false);
m_p3QuarterMeter->SetNumericIndicatorVisible(false);
// Réglage du look de l'aiguille
m_p3QuarterMeter->SetNeedleBaseRadius(10);
m_p3QuarterMeter->SetNeedleBaseStyle(TXS::NeedleBaseStyle_4);
m_p3QuarterMeter->SetNeedleStyle(TXS::NeedleStyle_4);
// Réduction de la taille des graduations
QFont fnt = m_p3QuarterMeter->GetScaleLabelsFont();
fnt.setPixelSize(8);
m_p3QuarterMeter->SetScaleLabelsFont(fnt);
// On peut ajuster la zone d'affichage des zones de couleurs
m_p3QuarterMeter->SetColorZonesVisible(false);
}
void Dialog::AdjustTopMeter()
{
// On donne au knob une taille fixe
m_pTopMeter->setFixedSize(480,240);
// L'origine et l'excursion définissent la forme du cadran du galvanomètre
// Mais il faut lui interdire d'être toujours circulaire
m_pTopMeter->SetScaleExcursion(10, 160);
m_pTopMeter->SetAlwaysCircular(false);
// Play with colors
m_pTopMeter->SetBackgroundIsTransparent(false);
m_pTopMeter->SetBackgroundColor(QColor("Ivory"));
m_pTopMeter->SetMeterBorderColor(QColor("MediumBlue"));
m_pTopMeter->SetMeterBackColor(QColor("Aliceblue"));
// Réglage du look de l'aiguille
m_pTopMeter->SetNeedleStyle(TXS::NeedleStyle_1);
m_pTopMeter->SetNeedleBaseStyle(TXS::NeedleBaseStyle_0);
m_pTopMeter->SetNeedleBaseRadius(5);
m_pTopMeter->SetNeedleColor(QColor("Crimson"));
// C'est un widget encombrant.... On se fait de la place....
m_pTopMeter->SetCaptionVisible(false);
m_pTopMeter->SetNumericIndicatorVisible(false);
// Réduction de la taille des graduations
QFont fnt = m_pTopMeter->GetScaleLabelsFont();
fnt.setPixelSize(8);
m_pTopMeter->SetScaleLabelsFont(fnt);
// Les leds éteintes sont grises
m_pTopMeter->SetDefaultColorZonesLedsColorAboveCursor(QColor("DimGrey"));
// On peut ajuster la zone d'affichage des zones de couleurs
m_pTopMeter->SetColorZonesStyle(TXS::KnobColorZonesStyle_Blocks);
m_pTopMeter->SetAutoAdjustColorZonesLeds(false);
m_pTopMeter->SetColorZonesBlocks(50);
m_pTopMeter->SetColorZonesThickness(15);
m_pTopMeter->SetColorZonesBlocksWidth(8);
// Colors
m_pTopMeter->AppendColorZone(0, 25,QColor("MediumBlue"));
m_pTopMeter->AppendColorZone(25, 50 ,QColor("LawnGreen"));
m_pTopMeter->AppendColorZone(50, 75 ,QColor("Gold"));
m_pTopMeter->AppendColorZone(75, 100 ,QColor("Crimson"));
}
Formes du cadran du widget
La forme du cadran du widget est déterminée par 3 propriétés :- ScaleOrigin (Héritée de TCircularScalarWidget)
- ScaleExcursion (Héritée de TCircularScalarWidget)
- AlwaysCircular
ScaleOrigin et ScaleExcursion qui sont toutes les deux définies via une seule fonction nommée SetScaleExcursion définissent la position de l'echelle circulaire le long du cercle. Elles sont exprimées en degrés d'angle et la coordonnée 0° de ces angles est située sur le point Ouest. Le sens de rotation positif est correspond au sens des aiguilles d'une montre. Ainsi dans l'exemple suivant, le secteur d'arc de couleur verte à pour origine 291°, et l'excursion est de 268,2° à partir de cette origine :

Ainsi dans les exemples de l'image en tête de cette page accompagnée du code correspondant, le Meter en haut à gauche de l'image à une origine à 10° et une excursion à 160°, le demi cercle supérieur est suffisant pour montrer toute l'echelle. Celui situé en bas au milieu à une origine à 10° et une excursion à 70°, le quart de cercle supérieur gauche est suffisant pour montrer toute l'échelle. Etc...
Enfin, si la propriété AlwaysCircular est réglée à true, alors le cadran sera toujours un cercle complet, quelque soient les valeurs des propriétés ScaleOrigin et ScaleExcursion.
Relations d'héritage
- Hérite de :
- TCircularScalarWidget.
Fonctions publiques
| TMeter(QWidget *parent = nullptr) | |
| void | void Copy(TMeter* pTarget) |
| TMeter* | CreateCopy(QWidget *parent = nullptr) |
| void | bool Draw(QPainter* pPainter, const QRect& Rect) |
| bool | EditColorZones(const double& Min = DBL_MAX, const double& Max = DBL_MAX, const QIcon& DialogIcon = QIcon(), const QString& DialogTitle = "", QWidget* pParent = nullptr) |
| QUuid | GetTWidgetIdentifier() |
| QString | GetTWidgetIdentifierAsString() |
| QString | GetTWidgetName() |
| bool | SetMinMax(const double& Min, const double & Max) |
| void | SetScaleTicksSpecification(const TXS::TicksSpecification& TicksSpecification) |
| void | SetValueToMax() |
| void | SetValueToMin() |
Propriétés
| Propriétés | Type | Ecriture | Lecture |
| AlwaysCentered | bool | SetAlwaysCentered | GetAlwaysCentered |
| AlwaysCircular | bool | SetAlwaysCircular | GetAlwaysCircular |
| Background | bool | SetHasBackground | HasBackground |
| Border | bool | SetHasBorder | HasBorder |
| InternalRadius | double | SetInternalRadius | GetInternalRadius |
| Maximum | double | GetMaximum | |
| MeterBackColor | Qcolor | SetMeterBackColor | GetMeterBackColor |
| MeterBorderColor | Qcolor | SetMeterBorderColor | GetMeterBorderColor |
| Minimum | double | GetMinimum | |
| NeedleBaseRadius | int | SetNeedleBaseRadius | GetNeedleBaseRadius |
| NeedleBaseStyle | TXS::NeedleBaseStyle | SettNeedleBaseStyle | GetNeedleBaseStyle |
| NeedleColor | Qcolor | SetNeedleColor | GetNeedleColor |
| NeedleStyle | TXS::NeedleStyle | SettNeedleStyle | GetNeedleStyle |
| NeedleThickness | int | SetNeedleThickness | GetNeedleThickness |
Description : Contructeur. Instancie un objet de la classe TMeter.
Paramètre : parent - type QWidget* - Pointeur vers un QWidget parent s'il existe. Ce paramètre est optionnel
Description : Copie toutes les valeurs des propriétés de cet objet aux propriétés de l'objet TMeter passé en paramètre.
Paramètre : pTarget - type TAnalogLed* - Pointeur vers un objet TMeter vers lequel sont copiées les valeurs des propriétés de cet objet
Description : Crée et retourne un nouvel objet de la classe TMeter après avoir initialisé toutes ses propriétés aux valeurs de celles de l'objet utilisé pour créer le nouvel objet.
Paramètre : parent - type QWidget* - Pointeur vers un QWidget parent s'il existe. Ce paramètre est optionnel
Valeur de retour : Pointeur vers le nouvel objet créé.
Description : Permet de tracer cet objet dans un rectangle dont les coordonnées sont passées en paramètres au moyen du QPainter passé en paramètre et créé par une classe héritant du QPaintDevice.
Cette méthode est essentiellement destinée à une utilisation pour tracer sur un LCD via les classes Classe CLCD7789 et Classe CLCD7789PaintDevice de la librairie cpp2835. Voir la rubrique : LCD 7789 avec Qt
Elle peut toutefois être utilisée pour tracer dans un objet d'une classe héritant de QPaintDevice, comme QImage ou QPixmap pour créer une image de l'objet sauvegardable dans un fichier image.
Sauf cas particuliers, cette méthode ne doit pas être utilisée pour tracer sur le moniteur sur lequel fonctionne l'application qui l'héberge. La mise à jour du tracé dans cette condition est contrôlée par l'application par surcharge de la méthode protégée "QWidget::paintEvent".
Paramètre : pPainter - type QPainter* - Pointeur vers un QPainter attaché au QPaintDevice dans lequel il faut tracer l'objet.
Paramètre : Rect - type const QRect& - Coordonnées du rectangle de tracé dans le QPaintDevice.
Description : Affiche une boite de dialogue modal permettant de créer ou de modifier la liste de zones de couleurs de l'objet.
Paramètre : Min - type const double& - Valeur de seuil bas minimale des zones de couleurs.
Paramètre : Max - type const double& - Valeur de seuil haut maximale des zones de couleurs.
Paramètre : DialogIcon - type const QIcon& - Icone à afficher dans la barre de titre de la fenêtre de dialogue.
Paramètre : DialogTitle - type const QString& - Texte à afficher dans la barre de titre de la fenêtre de dialogue.
Paramètre : parent - type QWidget* - Pointeur vers un QWidget parent de la boite de dialogue s'il existe. Ce paramètre est optionnel
Description : Retourne un UUID pour cettte classe d'objets.
Valeur de retour : UUID de cette classe d'objets.
Description : Retourne un UUID pour cettte classe d'objets.
Valeur de retour : UUID de cette classe d'objets sous forme de chaine de caractères. La valeur de l'UUID de cette est : ea7762c3-9242-4a2e-bc74-ac7b8cdcbfc8
Description : Retourne le nom de la classe..
Valeur de retour : Nom de cette classe d'objets sous forme de chaine de caractères. La valeur pour cette class est : TMeter
Description : Assigne les valeurs minimales et maximales entre lesquelles le meter fonctionne. Ces valeurs peuvent être retrouvées via les propriétés Maximum et Minimum.
Paramètre : Min - type const double& - Valeur minimale de fonctionnement du linear meter.
Paramètre : Max - type const double& - Valeur maximale de fonctionnement du linear meter.
Valeur de retour : Booléen indiquant le succès ou l'echec de la fonction.
Description : Cette fonction définie le choix de l'algorithme de calcul des valeurs des graduations principales de l'axe.
Une explication détaillée est documentée à la page : Gestion des axes
Paramètre : TicksSpecification - type TXS::TicksSpecification& - Spécification des graduations de l'axe.
Description : Assigne la valeur maximale de la gamme du meter à la propriété Value.
Description : Assigne la valeur minimale de la gamme du meter à la propriété Value.
Description : Cette propriété dfinie que quelque soit la forme du widget, il sera toujours centré dans son rectangle de visualisation.
Détails : Voir la rubrique Formes du widget
Type : bool
Valeur par défaut : false
Ecriture : void SetAlwaysCentered(const bool& Tf)
Lecture : bool GetAlwaysCentered()
Description : Cette propriété définie que quelque soit l'origine et l'excursion du widget, sa forme sera toujours circulaire..
Détails : Voir la rubrique Formes du widget
Type : bool
Valeur par défaut : false
Ecriture : void SetAlwaysCircular(const bool& Tf)
Lecture : bool GetAlwaysCircular()
Description : Cette propriété définie si le cadran du widget peut avoir une couleur de fond ou pas.
Type : bool
Valeur par défaut : true
Ecriture : void SetHasBackground(const bool& Tf)
Lecture : bool HasBackground()
Description : Cette propriété définie si le cadran du widget a un bord ou pas.
Type : bool
Valeur par défaut : true
Ecriture : void SetHasBorder(const bool& Tf)
Lecture : bool HasBorder()
Description : Cette propriété définie le rayon du cadran du widget (bord exclu). Si cette propriété est définie à 0, alors le widget calcule automatiquement ce rayon en prenant le maximum d'espace disponible.
Type : double
Valeur par défaut : 0
Ecriture : void SetInternalRadius(const double& Radius)
Lecture : double GetInternalRadius()
Description : Cette propriété retourne la borne maximale du meter définie par la fonction SetMinMax.
Type : double
Lecture : double GetMaximum();
Description : Cette propriété définie la couleur de fond du cadran.
Type : QColor
Valeur par défaut : QColor(255,255,255,255) - Blanc
Ecriture : void SetMeterBackColor(const QColor& Col)
Lecture : QColor GetMeterBackColor()
Description : Cette propriété définie la couleur du bord du cadran.
Type : QColor
Valeur par défaut : QColor(0,0,0,255) - Noir
Ecriture : void SetMeterBorderColor(const QColor& Col)
Lecture : QColor GetMeterBorderColor()
Description : Cette propriété retourne la borne minimale du meter définie par la fonction SetMinMax.
Type : double
Lecture : double GetMinimum();
Description : Cette propriété définie le rayon de la base de l'aiguille.
Type : int
Valeur par défaut : 20
Ecriture : void SetNeedleBaseRadius(const int& Radius)
Lecture : int GetNeedleBaseRadius()
Description : Cette propriété définie le style de la base de l'aiguille.
Type : TXS::NeedleBaseStyle
Valeur par défaut : TXS::NeedleBaseStyle_5
Ecriture : void SetNeedleBaseStyle(const TXS::NeedleBaseStyle& Style)
Lecture : TXS::NeedleBaseStyle GetNeedleBaseStyle();
Description : Cette propriété définie la couleur de l'aiguille lorsque la propriété NeedleStyle prend la valeur TXS::NeedleStyle_0 ou TXS::NeedleStyle_1.
Type : QColor
Valeur par défaut : QColor(0,0,0,255) - Noir
Ecriture : void SetNeedleColor(const QColor& Col)
Lecture : QColor GetNeedleColor()
Description : Cette propriété définie le style de l'aiguille.
Type : TXS::NeedleStyle
Valeur par défaut : TXS::NeedleStyle_2
Ecriture : void SetNeedleStyle(const TXS::NeedleStyle& Style)
Lecture : TXS::NeedleStyle GetNeedleStyle();
Description : Cette propriété définie l'épaisseur de l'aiguille lorsque la propriété NeedleStyle prend la valeur TXS::NeedleStyle_0 ou TXS::NeedleStyle_1.
Type : int
Valeur par défaut : 5
Ecriture : void SetNeedleThickness(const int& nThickness
Lecture : int GetNeedleThickness()