qtimer qt timer

qtimer pyqt5



Cómo usar QTimer (2)

En Qt estoy intentando configurar un QTimer que llama a una función llamada "actualizar" cada segundo. Aquí está mi archivo .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"; }

y el principal:

#include <QtGui/QApplication> #include "mainwindow.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); return a.exec(); }

El proyecto se está construyendo, pero no se ejecuta la actualización, ya que la línea "actualización" no se muestra en ninguna parte ... ¿Alguien ve lo que estoy haciendo mal?


  1. Es una buena práctica darle un padre a su QTimer para que use el sistema de gestión de memoria de Qt.

  2. update() es una función QWidget , ¿es eso a lo que intenta llamar o no? http://qt-project.org/doc/qt-4.8/qwidget.html#update .

  3. Si el número 2 no se aplica, asegúrese de que la función que está intentando activar se declara como una ranura en el encabezado.

  4. Finalmente, si ninguno de estos es su problema, sería útil saber si está recibiendo algún error de conexión en tiempo de ejecución.


Otra forma es usando el temporizador de inicio de método incorporado y el evento TimerEvent.

Encabezamiento:

#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

Fuente:

#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..."; }