Bienvenue sur le forum !

Si vous souhaitez rejoindre la communauté, cliquez sur l'un de ces boutons !

Qt 5 : 5.9.0 - Qt Creator : 4.3.0 - Qt Installer : 2.0.3 - JOM : 1.1.2 - Qt Build suite : 1.7.0 - VS Qt 5 : 2.0.0

clavier numerique

Bonjour à tous,

Pour finir (ou presque ) mon programme, j'ai encore besoin de votre aide
Mon clavier numérique est composé de QPushButtons

J'aimerai savoir quelle technique ( ou calcul ) je doit utilisé pour que lorsque je clique sur les chiffres (QPushButton) le montant réglé change

Exemple : je clique sur le 1 : le DoubleSpinBox affiche 0,01
je clique ensuite sur 2 : le DoubleSpinBox affiche 0,12
Je clique ensuite sur 5 : le DoubleSpinBox affiche 1.25
et ainsi de suite ..., si je reclique sur le 1 : le DoubleSpinBox affiche 12.51, ... etc

Pour l'exemple de l'imprime écran

je clique sur le 2 : le DoubleSpinBox affiche 0,02
je clique ensuite sur 0 : le DoubleSpinBox affiche 0,20
Je clique ensuite sur .00 : le DoubleSpinBox affiche 20.00 ( ou sur 2 fois le chiffre zero : le DoubleSpinBox affiche 2.00 puis 20.00 )

Dès que le montant réglé est supérieur ou égal au montant total à réglé, le QPushButton devient actif ( cette fonction est faite )
Le QPushButton avec les flèches verte permet de copier le montant total dans le montant réglé ( rapide si le client dont le compte rond )
Et la QPushButton avec la gomme sert à ... vous avez devinez ...effacer le montant réglé et de le remettre à 0.00

Je vous montre un imprime écran (ne tenez pas compte du petit SpinBox au dessus de l'imprimante )


image

Merci de m'aiguiller.

PS : je ne veux pas utilisé un clavier numérique tout fait, je souhaite vraiment le programmer de A à Z, merci
«1

Réponses

  • euh... comme ça, à brûle-pourpoing : nouvelleValeur = ancienneValeur * 10 + (chiffre / 100) ?
  • Ma question myrddin, existe il une fonction qui permette de récupéré l'ancienne valeur ou juste le fait de mettre
    ui->montantRegle->value();
    suffira à récupéré la valeur dejà inséré
  • @myrddin772
    ;) balèze !!!

    @argon71
    pour addition / soustraction, a priori ???, ça devrait bien se passer

    si, par contre, tu dois faire du calcul de TVA, tu risques d'avoir des surprises ! ;) ;) ;) du genre HT + TVA <> TTC :rolleyes: :rolleyes: :rolleyes:
  • Les matchs et moi on a jamais fait bon ménage :mad:
  • tu joues pas o foute ??? ;) ;) ;)
  • si je suis arbitre de foute !!! :D:D:D
  • J'ai tester ca mais ca marche pas
    void page11::on_bouton1_clicked()
    {
    double valeur = ui->montantReglerEspeces->value() * 10 + (1 / 100);
    ui->montantReglerEspeces->setValue(valeur);
    }
    void page11::on_bouton2_clicked()
    {
    double valeur = ui->montantReglerEspeces->value() * 10 + (2 / 100);
    ui->montantReglerEspeces->setValue(valeur);
    }
  • April 2012 modifié
    Ça vient du
    (1 / 100)
    Le compilateur comprend que tu veux un calcul sur un entier, donc 1/100 = 0 (chez les entiers :p )
    Remplace par :
    (1. /100)
    Avec le point après le 1, tu lui signales que tu veux travailler avec des nombres à virgules
  • argon71 said:
    J'ai tester ca mais ca marche pas
    void page11::on_bouton1_clicked()
    {
    double valeur = ui->montantReglerEspeces->value() * 10 + (1 / 100);
    ui->montantReglerEspeces->setValue(valeur);
    }
    void page11::on_bouton2_clicked()
    {
    double valeur = ui->montantReglerEspeces->value() * 10 + (2 / 100);
    ui->montantReglerEspeces->setValue(valeur);
    }
    et dieu créa le QSignalMapper :) :) :) quel bonheur !!!
  • Effectivement ! :P
  • merci a vous, cela fonctionne très bien. Et concernant l'alphabet, c'est quel principe ???
  • Oui, c'est le même principe.

    C'est encore plus simple avec, comme l'a suggéré Nicolas SOUCHON, avec un QSignalMapper ;)
  • ok je vais regarder ce que je trouve su la doc pour ce QSignalMapper.

    Je ne connais pas. Merci je recherche et je vous tiens informer si je ne comprend pas. Encore merci
  • je serai peut etre HS mais une petite question : Un QDoubleSpinBox en page2 pour le copier dans un autre QDoubleSpinBox en page4 ??? ca marche pas ca.
    ui->MontantTotalAPayer->setValue(MontantPrécedent);
    Il y a une modification à faire mais laquelle ?
  • April 2012 modifié
    si MontantPrecedent (le c++ n'autorise pas les caractères accentués dans les noms de variables ;)) est une QDoubleSPinBox, il faut passer sa valeur à MontantTotalAPayer.

    Donc ta ligne doit être :
    ui->MontantTotalAPayer->setValue(ui->MontantPrécedent->value());
  • oui myrddin772 pour le "précédent" ( avec les accents :D )c'est une petite erreur de frappe en recopiant la ligne (l'erreur n'est pas présente dans le code effectivement )

    malheureusement ca ne va pas
    ex : en page 12 je veux que mon QDoubleSpinBox intitulé "FINALMontant" prenne la valeur du QDoubleSpinBox "totalAPayerEspeces" en page précédente c'est à dire la 11 lorsque je valide sur le boutton en page 11 également. J'ai donc mis cette phrase dans le slot de la page 11
    void page11::on_finaliser2_clicked()
    {
    // #include "page12.h"
    // ouvrir la suivante fenêtre appelée page12.ui
    hide(); // On cache MaFenetre 11
    page12* window = new page12(this); //Dans cette page se trouve une QDoubleSpinBox intitulé "FINALMontant" qui doit prendre la valeur du QDoubleSpinBox "totalAPayerEspeces" présent dans la page 11 qui vient d'être fermée
    window->show();

    ui->FINALMontant->setValue(ui->totalAPayerEspeces->value());
    }
    pas de compilation
    page11.cpp:09: erreur : 'class Ui::page11' has no member named 'FINALMontant'
  • alors, tu peux créer une méthode dans ton widget page12 qui passe une valeur à la QDoubleSPinBox de son membre ui, du genre :
    void page12::setMontantFinal(double& valeur)
    {
    ui->FINALMontant->setValue(valeur)
    }
    et dans ta méthode, tu fais :
    void page11::on_finaliser2_clicked()  
    {
    // #include "page12.h"
    // ouvrir la suivante fenêtre appelée page12.ui
    hide(); // On cache MaFenetre 11
    page12* window = new page12(this); //Dans cette page se trouve une QDoubleSpinBox intitulé "FINALMontant" qui doit prendre la valeur du QDoubleSpinBox "totalAPayerEspeces" présent dans la page 11 qui vient d'être fermée
    window->show();
    window->setMontantFinal(ui->totalAPayerEspeces->value());
    }
  • alors la, la colle ... :mad:

    voici ma page12
    #include "page12.h"
    #include "ui_page12.h"
    #include "page11.h"
    #include "ui_page11.h"


    page12::page12(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::page12)
    {
    ui->setupUi(this);
    }
    void page12::setMontantFinal(double& valeur)
    {
    ui->FINALMontant->setValue(valeur);
    }


    page12::~page12()
    {
    delete ui;
    }
    et ma page 11
    #include "page11.h"
    #include "ui_page11.h"

    #include "page12.h"
    #include "ui_page12.h"

    page11::page11(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::page11)
    {
    ui->setupUi(this);

    ui->finaliser2->setIcon(QIcon("Printer-icon.png"));
    ui->finaliser2->setIconSize(QSize(150, 150));

    // quelques BLA-BLA entre

    void page11::on_finaliser2_clicked()
    { // #include "page12.h"
    // ouvrir la suivante fenêtre appelée page12.ui
    hide(); // On cache MaFenetre 11
    page12* window = new page12(this);
    window->show();
    window->setMontantFinal(ui->totalAPayerEspeces->value());
    }
    et toujours la même erreur
    page11.cpp:24: erreur : 'class page12' has no member named 'setMontantFinal'
  • Tu pourrais montrer le fichier page12.h ?
  • Il doit m'en manquer un bout la ...
    #ifndef PAGE12_H
    #define PAGE12_H

    #include <QDialog>

    namespace Ui {
    class page12;
    }

    class page12 : public QDialog
    {
    Q_OBJECT

    public:
    explicit page12(QWidget *parent = 0);
    ~page12();


    private:
    Ui::page12 *ui;
    };

    #endif // PAGE12_H
  • Tu n'y as pas déclaré la méthode setMontantFinal... ;)
  • désolé myrddin772 mais la je suis trop creuvé pour réfléchir, je vais me coucher car mes yeux ne tiennent plus
    Merci de ton aide
  • bonjour a tous,

    Bon j'ai réflechi à tous ca et je doit dire que je ne sais pas faire pour délcarer ma methode
    En fait j'ai l'impression de travailler à l'envers c'est a dire de la fin vers le début
    Je n'ai pad pour habitude de faire dans ce sens donc un peu perdu
    merci de votre aide
  • peut etre
    void page12::setMontantFinal(double& valeur);
    ou
    void page12::setMontantFinal(valeur);
  • Dans la déclaration de la classe page12, tu dois ajouter, dans la partie "public" :
    void setMontantFinal(double& valeur);
  • ma page 11.h
    #ifndef PAGE11_H
    #define PAGE11_H

    #include "page12.h"
    #include "ui_page12.h"

    #include <QDialog>

    namespace Ui {
    class page11;
    }

    class page11 : public QDialog
    {
    Q_OBJECT

    public:
    explicit page11(QWidget *parent = 0);
    ~page11();

    private slots:

    // quelques voids

    void on_finaliser2_clicked();


    private:
    Ui::page11 *ui;
    };

    #endif // PAGE11_H
    ma page12.h
    #ifndef PAGE12_H
    #define PAGE12_H

    #include "page11.h"
    #include "ui_page11.h"

    #include <QDialog>

    namespace Ui {
    class page12;
    }

    class page12 : public QDialog
    {
    Q_OBJECT

    public:
    explicit page12(QWidget *parent = 0);
    ~page12();

    void setMontantFinal(double& valeur);


    private:
    Ui::page12 *ui;

    };

    #endif // PAGE12_H
    ma page12.cpp
    #include "page12.h"
    #include "ui_page12.h"
    #include "page11.h"
    #include "ui_page11.h"


    page12::page12(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::page12)
    {
    ui->setupUi(this);
    }
    void page12::setMontantFinal(double& valeur)
    {
    ui->FINALMontant->setValue(valeur);
    }


    page12::~page12()
    {
    delete ui;
    }
    et ma page11.cpp
    #include "page11.h"
    #include "ui_page11.h"

    #include "page12.h"
    #include "ui_page12.h"

    page11::page11(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::page11)
    {
    ui->setupUi(this);

    ui->finaliser2->setIcon(QIcon("Printer-icon.png"));
    ui->finaliser2->setIconSize(QSize(150, 150));

    // quelques autres fonctions

    void page11::on_finaliser2_clicked()
    { //#include "page12.h"
    //ouvrir la suivante fenêtre appelée page12.ui
    hide(); // On cache MaFenetre 11
    page12* window = new page12(this);
    window->show();
    window->setMontantFinal(ui->totalAPayerEspeces->value());
    }
    si je ne me suis pas trompé je ne comprend pas pourquoi ca ne compile pas
  • May 2012 modifié
    :/ :/
    Tu pourrais envoyer ton projet ? histoire que je regarde pourquoi ça ne compile pas
  • Bon, j'ai reçu ton projet, il a été compilé sans problème...

    Essaie de nettoyer le projet, puis de relancer qmake avant de recompiler.
  • ok mais n'aurais je pas mis des "//" devant les lignes posant des problèmes car j'ai fait ca pour pouvoir travailler sur les autres pages

    Je t'ai surement envoyer le projet mais avec ces "//"

    Regarde sur les page 11 et 12 ???

    Sinon je nettoirai tout ca ...
  • May 2012 modifié
    euh... j'ai vérifié... et si...
    J'ai décommenté les lignes en cause et, en regardant le message d'erreur du copilo :rolleyes: ;), ça vient de l'argument de ta méthode setMontantFinal...
    Transmorme, dans la déclaration (le .h) et l'implémentation (le .cpp), ton :
    setMontantFinal(double& valeur)
    en
    setMontantFinal(double valeur); // sans l'esperluette : le & ;)
Connectez-vous ou Inscrivez-vous pour répondre.