[QT] QTimer qui s'exécute chaque 30secondes
Luune
Messages postés
24
Date d'inscription
Statut
Membre
Dernière intervention
-
loupius Messages postés 697 Date d'inscription Statut Membre Dernière intervention -
loupius Messages postés 697 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai une fenêtre qui comporte 3 Frame, Je veux afficher un seul Frame chaque 30secondes ( le 1er, apres le 2eme et apres le 3eme ainsi de suite)
Pour le faire j'ai essayé ce code
Avec ce code, les 3 Frames s'affichent et après 30 secondes, le Frame 3 s'affiche et rien ne se passe après
J’espère que j'ai bien expliqué mon problème, aidez moi a le résoudre s'il vous plait. Merci
J'ai une fenêtre qui comporte 3 Frame, Je veux afficher un seul Frame chaque 30secondes ( le 1er, apres le 2eme et apres le 3eme ainsi de suite)
Pour le faire j'ai essayé ce code
#include "logista.h"
#include "ui_logista.h"
Logista::Logista(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::Logista)
{
QTimer *timer2 = new QTimer(this);
connect(timer2, SIGNAL(timeout()), this, SLOT(ChangeFrame()));
timer2->start(30000);
ui->setupUi(this);
}
Logista::~Logista()
{
delete ui;
}
void Logista::ChangeFrame()
{
Frame1();
Frame2();
Frame3();
}
void Logista::Frame1()
{
ui->frame->show();
ui->frame_2->hide();
ui->frame_3->hide();
}
void Logista::Frame2()
{
ui->frame_2->show();
ui->frame->hide();
ui->frame_3->hide();
}
void Logista::Frame3()
{
ui->frame_3->show();
ui->frame->hide();
ui->frame_2->hide();
}
Avec ce code, les 3 Frames s'affichent et après 30 secondes, le Frame 3 s'affiche et rien ne se passe après
J’espère que j'ai bien expliqué mon problème, aidez moi a le résoudre s'il vous plait. Merci
A voir également:
- [QT] QTimer qui s'exécute chaque 30secondes
- Qt sdk - Télécharger - Langages
- Qt web - Télécharger - Navigateurs
- Qt tab bar - Télécharger - Personnalisation
- Qt ✓ - Forum Programmation
- Nous ne savons pas ce qui s'est passé mais nous n'avons pas pu exécuter cet outil sur votre pc - Forum logiciel systeme
2 réponses
Salut,
Je pense que ton problème tu devrais le poster sur :
https://codes-sources.commentcamarche.net/
Je pense que ton problème tu devrais le poster sur :
https://codes-sources.commentcamarche.net/
Luune
Messages postés
24
Date d'inscription
Statut
Membre
Dernière intervention
5
Ah je savais pas, merci beaucoup.
Bonsoir,
L'affichage est logique; l'appel à 'ChangeFrame()' équivaut à:
Il vaut mieux écrire simplement quelque chose du genre:
L'affichage est logique; l'appel à 'ChangeFrame()' équivaut à:
ui->frame->show();Donc finalement seule 'frame_3 est montré.
ui->frame_2->hide();
ui->frame_3->hide();
ui->frame_2->show();
ui->frame->hide();
ui->frame_3->hide();
ui->frame_3->show();
ui->frame->hide();
ui->frame_2->hide();
Il vaut mieux écrire simplement quelque chose du genre:
static int flag;Bonne continuation.
void Logista::ChangeFrame()
{
ui->frame ->setVisible(flag == 0);
ui->frame_2->setVisible(flag == 1);
ui->frame_3->setVisible(flag == 2);
if (++flag >= 3)
flag = 0;
}