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.



void Dialog::AdjustFullMeter()
{
  // 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)
voidvoid Copy(TMeter* pTarget)
TMeter* CreateCopy(QWidget *parent = nullptr)
voidbool Draw(QPainter* pPainter, const QRect& Rect)
boolEditColorZones(const double& Min = DBL_MAX, const double& Max = DBL_MAX, const QIcon& DialogIcon = QIcon(), const QString& DialogTitle = "", QWidget* pParent = nullptr)
QUuidGetTWidgetIdentifier()
QStringGetTWidgetIdentifierAsString()
QStringGetTWidgetName()
boolSetMinMax(const double& Min, const double & Max)
voidSetScaleTicksSpecification(const TXS::TicksSpecification& TicksSpecification)
voidSetValueToMax()
voidSetValueToMin()

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

TMeter::TMeter(QWidget *parent = nullptr)

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



void TMeter::Copy(TMeter* pTarget)

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



TMeter* TMeter::CreateCopy(QWidget *parent = nullptr)

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éé.



void TMeter::Draw(QPainter* pPainter, const QRect& Rect)

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.



void TMeter::EditColorZones(const double& Min = DBL_MAX, const double& Max = DBL_MAX, const QIcon& DialogIcon = QIcon(), const QString& DialogTitle = "", QWidget* pParent = nullptr)

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



QUuid TMeter::GetTWidgetIdentifier()

Description : Retourne un UUID pour cettte classe d'objets.


Valeur de retour : UUID de cette classe d'objets.



QString TMeter::GetTWidgetIdentifierAsString()

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



QString TLinearMeter::TMeter()

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



bool TMeter::SetMinMax(const double& Min, const double & Max)

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.



void TMeter::SetScaleTicksSpecification(const TXS::TicksSpecification& TicksSpecification)

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.



QString TMeter::SetValueToMax()

Description : Assigne la valeur maximale de la gamme du meter à la propriété Value.



QString TMeter::SetValueToMin()

Description : Assigne la valeur minimale de la gamme du meter à la propriété Value.



AlwaysCentered

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()



AlwaysCircular

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()



Background

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()



Border

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()



InternalRadius

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()



Maximum

Description : Cette propriété retourne la borne maximale du meter définie par la fonction SetMinMax.


Type : double

Lecture : double GetMaximum();



MeterBackColor

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()



MeterBorderColor

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()



Minimum

Description : Cette propriété retourne la borne minimale du meter définie par la fonction SetMinMax.


Type : double

Lecture : double GetMinimum();



NeedleBaseRadius

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()



NeedleBaseStyle

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();



NeedleColor

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()



NeedleStyle

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();



NeedleThickness

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()