Comment utiliser QTimer
Qt je suis en train de définir un QTimer
cela appelle une fonction appelée "update" chaque seconde. Voici mon .fichier cpp:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QTimer>
#include "QDebug"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(update()));
timer->start(1000);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::update()
{
qDebug() << "update";
}
et dans le main:
#include <QtGui/QApplication>
#include "mainwindow.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
le projet est en cours de construction, mais il n'exécute pas la mise à jour, puisque la ligne "update" n'apparaît nulle part... N'est ce que quelqu'un voit ce que je fais de mal?
2 réponses
c'est une bonne pratique de donner un parent à votre
QTimer
pour utiliser le système de gestion de la mémoire de Qt.update()
est un QWidget la fonction est que ce que vous essayez d'appeler ou pas? http://qt-project.org/doc/qt-4.8/qwidget.html#update.Si 2 ne s'applique pas, assurez-vous que la fonction que vous essayez d'déclencheur est déclarée comme une fente dans le tête.
enfin, si aucune de ces erreurs ne vous concerne, il serait utile de savoir si vous avez des erreurs de connexion à l'exécution.
L'autre moyen est l'utilisation de la méthode intégrée start timer & event TimerEvent.
Header:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
int timerId;
protected:
void timerEvent(QTimerEvent *event);
};
#endif // MAINWINDOW_H
Source:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
timerId = startTimer(1000);
}
MainWindow::~MainWindow()
{
killTimer(timerId);
delete ui;
}
void MainWindow::timerEvent(QTimerEvent *event)
{
qDebug() << "Update...";
}