Bienvenue sur le forum !

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

Qt 5 : 5.8.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

Modification automatique d'un QTimeEdit

Bonjour, j'ai besoin que vous m'aiguillé sur la ou les fonctions a utiliser

J'ai 3 QtimeEdit sous QTCreator ( ui->heure1, ui->heure2 et vous l'aurez deviner ui->heure3, ben ouiiiii )
l'utilisateur entre l'heure dans ui->heure1 et je voudrai que l'ordi ajoute 10minutes dans ui->heure2 ( soit heure1 + 10minutes) et qu'il ajoute 5minutes dans ui->heure3 ( soit heure2 + 5minutes )
Tout cela en laissant l'utilisateur maitre de modifier heure2 et heure3 à sa volonté
L'ordi, après avoir valider, vérifira qu'il y a bien 10minutes minumum qui sépare heure1 de heure2 et qu'il y a bien 5 minutes minimum qui sépare heure2 de heure3

La je cherche mais je vous avoue que je ne sais pas quelle fonction utilisé

Réponses

  • Bonjour !

    Tu avais découvert addSecs () (http://forum.qtfr.org/viewtopic.php?pid=81592#p81592)
    sers-t'en ! 10 mn = 600 s.
    ---
    La différence entre 2 QDateTime d1 et d2 en secondes c'est d2.secsTo (d1);
  • December 2011 modifié
    Voila ce que j'ai fait mais le compilateur me dit : erreur : 'class QLineEdit' has no member named 'dateTime'

    QDateTime heure1 = ui->timeEdit->dateTime(); // céation d'une variable ( une copie ) de ui->timeEdit
    QDateTime heure1Plus10 = heure1.addSecs(600); // Ajout à la copie 10min
    QString heureSousFormeDeTexte = heure1Plus10.toString ("hh:mm"); // je transforme le résultat en un QString (chaîne de caractères)
    heure2 = new QLineEdit (heureSousFormeDeTexte); // Je créé un QLineEdit avec cette chaîne de caractères
    ui->timeEdit_2 = heure2->dateTime();// j'insere la nouvelle heure dans le ui->timeEdit_2
    c'est cette derniere ligne qui ne va pas
  • December 2011 modifié
    C'est tout simplement parce que ton heure2 est QLineEdit et pas un QDateTimeEdit comme, je le pense, tu le voulais au départ...

    Sinon, tu peux créer un QDateTime::fromString(ta_chaîne, le_modèle)...
  • December 2011 modifié
    je ne vois pas ou ca cloche

    QDateTime heure1 = ui->timeEdit->dateTime(); // céation d'une variable ( une copie ) de ui->timeEdit
    QDateTime heure1Plus10 = heure1.addSecs(800); // Ajout à la copie 10min
    QString heureSousFormeDeTexte = heure1Plus10.toString ("hh:mm"); // je transforme le résultat en un QString (chaîne de caractères)
    heure2 = new QDateTimeEdit (heureSousFormeDeTexte); // Je créé un QDateTimeEdit avec cette chaîne de caractères
    ui->timeEdit_2 = heure2->dateTime();// j'insere la nouvelle heure dans le ui->timeEdit_2

    mon .h

    public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
    QDateTime *heure1;
    QDateTimeEdit *heure2;

    04: erreur : no matching function for call to 'QDateTimeEdit::QDateTimeEdit(QString&)'
    05: erreur : cannot convert 'QDateTime' to 'QTimeEdit*' in assignment
  • argon71 said:
    je ne vois pas ou ca cloche
    Le compilateur te le dit.

    no matching function for call --> la fonction n'existe pas
    cannot convert XXX to YYY in assignment --> en C++ les expressions de part et d'autre du signe = doivent être de même type.
  • PapaJaac said:

    Le compilateur te le dit.

    no matching function for call --> la fonction n'existe pas
    cannot convert XXX to YYY in assignment --> en C++ les expressions de part et d'autre du signe = doivent être de même type.
    Merci PapaJaac pour ton aide :D :) ca m'aide beaucoup :lol:
  • Bonjour,
    Ici ce n'est pas un problème d'utilisation de Qt, c'est plus générale. Sur la première erreur, tu essayes d'instancier un QDateTimeEdit qui, comme le dit la doc de Qt, prend comme argument de constructeur un QDate, un QDateTime ou un QTime, mais jamais un QString. Donc passe lui le bon argument, cad "heure1Plus10" qui est un QDateTime. Tu n'as pas besoin de passer par un QString, et surtout ça va pas compiler.
    Ensuite, la deuxième erreur c'est logique. Comme une patate n'est pas égale à une carotte, un QDateTimeEdit (heure2) ne peut pas être égalisé à un QTimeEdit. A toi de voir le résultat que tu veux obtenir, mais ça ne peut pas marcher comme ça.
  • j'ai modifier mon code ainsi, j'ai en effet supprimer la ligne faisant référence au QString, je ne sais pas pourquoi j'ai voulu absolument passé par un QString

    QDateTime heure1 = ui->timeEdit->dateTime(); // céation d'une variable ( une copie ) de ui->timeEdit
    QDateTime heure1Plus10 = heure1.addSecs(800); // Ajout à la copie 10min
    heure2 = new QDateTimeEdit (heure1Plus10); // Je créé un QDateTimeEdit avec cette chaîne de caractères
    ui->timeEdit_2 = heure2->QDateTime();// j'insere la nouvelle heure dans le ui->timeEdit_2
    je voudrai que mon ui->EditTime_2 prenne la valeur de QDateTimeEdit (heure2) la derinere phrase bloque ( c'est plus des carottes comparé a des patates la, c'est un ordinateur puissant et intéligeant comparé à un petit utilisateur novice... ) :rolleyes: :lol:
  • L'ordinateur est puissant, certes, mais n'est pas intelligent, c'est un amplificateur d'erreur... il fait bêtement ce qu'on lui demande... :p

    Et si tu essayais :
    ui->timeEdit_2->setDateTime(heure1Plus10);
    car je suppose que timeEdit_2 est un pointeur sur QDateTimeEdit.
  • Bonjour,

    Désolé d'augmenter mon compteur de messages avec cette réponse mais la remarque suivante :
    myrddin772 said:
    L'ordinateur est puissant, certes, mais n'est pas intelligent, c'est un amplificateur d'erreur... il fait bêtement ce qu'on lui demande... :p
    mérite pour le moins un commentaire de reformulation : l'ordinateur est puissant et fait intelligemment ce que l'informaticien lui a programmé (voire bêtement !!!).
  • Teofifil said:
    Bonjour,

    Désolé d'augmenter mon compteur de messages avec cette réponse mais la remarque suivante :
    [quote=myrddin772]L'ordinateur est puissant, certes, mais n'est pas intelligent, c'est un amplificateur d'erreur... il fait bêtement ce qu'on lui demande... :p
    mérite pour le moins un commentaire de reformulation : l'ordinateur est puissant et fait intelligemment ce que l'informaticien lui a programmé (voire bêtement !!!).[/quote]

    Ne t’inquiètes pas pour le compteur de messages ;)

    Jolie reformulation :)
  • Merci a vous tous pour votre aide si precieuse, je suis parvenu a faire ce que je voulai, et meme le controle par l'ordi sur les temps

    Pour ceux que cela intersse, voici mon code modifier

    QDateTime heure1 = ui->timeEdit->dateTime(); // céation d'une variable ( une copie ) de ui->timeEdit
    QDateTime heure1Plus10 = heure1.addSecs(600); // Ajout à la copie 10min
    heure2 = new QDateTimeEdit (heure1Plus10); // Je créé un QDateTimeEdit avec cette chaîne de caractères
    ui->timeEdit_2->setDateTime(heure1Plus10);

    QDateTime heure6 = ui->timeEdit->dateTime(); // céation d'une variable ( une copie ) de ui->timeEdit
    QDateTime heure7 = ui->timeEdit_2->dateTime(); // céation d'une variable ( une copie ) de ui->timeEdit_2
    heure6.secsTo(heure7); // Comparaison des deux, il faut impérativement que le temps soit de 10minutes ou plus

    if (heure6.secsTo(heure7) > 600 || heure6.secsTo(heure7) == 600)
    {
    QMessageBox::information(this, "Ok", "Ok !");
    }
    else if (heure6.secsTo(heure7) < 600)
    {
    QMessageBox::information(this, "NON", "Le temps entre la commande et la préparation n'est pas respecté");
    Je souhaite vous apporté toute ma gratitude pour tout l'aide que vous m'apporter régulierement pour mes programmes, je suis novice et j'ai besoin de beaucoup d'aide et c'est la sur ce seul site que je trouve de l'aide
    Une aide chaleureuse et positive.
    Un grand merci a vous tous
Connectez-vous ou Inscrivez-vous pour répondre.