[QT] Interface de calcul proche de Matlab

Bonjour,

Je suis débutant sur QT , j'ai QT SDK 2010.02.1 installé récemment. Je souhaite créer un interface de calcul proche de Matlab, style quand on écrit 1+2 puis en tapant sur entrée, on obtient 3 en bas.

Pour l'instant j'ai pu créer un champ de saisie avec QLineEdit. Pour tester, j'ai demandé à ce que le bouton "entrée" fait fermer la fenêtre, et ça marche avec la commande suivant:

connect(LineEdit, SIGNAL(returnPressed()), qApp, SLOT(quit()));

Maintenant je me demande comment je peux le rendre intelligent en détectant les caractères et les chiffres, genre détecter dans "1+2" le "1", puis l'opérateur "+" puis le deuxième chiffre "2".

Quelqu'un aurait une idée ? Merci beaucoup...

6 réponses

  • Votes
  • Date
  • Date décroissante
  1. oui presque comme une calculette, mais textuel, sans les boutons...
    il y aura un champ de saisie, où on peut taper soit "1+1" ou "2/3" et en tapant sur entrée le résultat apparaît en bas...
    1. Contributeur
      re, regardes sur le lien que je t'ai donne tu va trouver
      a+
      1. y'a-t-il un lien vers une discussion spécifique ? parce que les discussions, il y en a... j'ai pensé à QString, mais je ne suis pas sûr qu'il puisse détecter les calculs à faire...
        1. voici ce que j'ai déjà:

          calculpad.cpp

          #include <QtGui>
          #include <QLineEdit>
          #include <QString>
          
          #include "calculpad.h"
          
          Window::Window()
          {
              QGroupBox *Groupe = new QGroupBox(tr("Calcul"));
          
              LineEdit = new QLineEdit;
              LineEdit->setFocus();
          
              connect(LineEdit, SIGNAL(editingFinished()), qApp, SLOT(quit()));
          
              QGridLayout *Layout = new QGridLayout;
              Layout->addWidget(LineEdit, 1, 0, 1, 2);
              QGridLayout *layout = new QGridLayout;
              layout->addWidget(Groupe, 1, 0, 2, 4);
          
              Groupe->setLayout(Layout);
              setLayout(layout);
          
              setWindowTitle(tr("CalculPad"));
          }


          calculpad.h

          #ifndef CALCULPAD_H 
          #define CALCULPAD_H
          
          #include <QWidget>
          
          class QLineEdit;
          
          class Window: public QWidget
          {
              Q_OBJECT
          
          public:
              Window();
          
          private:
              QLineEdit *LineEdit;
              QString str;
          };
          
          #endif


          main.cpp

          #include <QApplication>
          
          #include "calculpad.h"
          
          int main(int argc, char *argv[])
          {
              QApplication app (argc, argv);
          
              Window Window;
              Window.show();
          
              return app.exec();
          }


          Ce que je voudrais faire d'abord, c'est de pouvoir afficher quelque chose en dessous en cliquant sur "entrée", genre un string 'Bravo'.

          Ensuite, en utilisant les propriétés de QString (sauf si quelqu'un a une meilleure idée) pour détecter les opérateurs (+, -, *, /) et de différencier les caractères avant et après les opérateurs...

          Quelqu'un pourrait m'aider ? Merci...
          1. Contributeur
            J'ai fait une calculette de ce genre. C'est assez complexe.
            il faut récupérer la chaine tapée dans un QString et ensuite l'analyser.
            L'analyse consiste à séparer les valeurs des opérateurs.