Таймер работает только в таком виде:
код:
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QTimer *ptimer = new QTimer(this);
ptimer->start(500);
connect(ptimer,SIGNAL(timeout()),this,SLOT(PrintMess()));
}
...
void MainWindow::PrintMess()
{
ui->textEdit->append(tr(MyMessage.toAscii()));
}
...
Т.е. создавать и запускать его надо в конструкторе формы.
Если я запускаю таймер в другом месте, компилятор ругается, что переменная не объявлена.
Добавляю в mainwindow.h
...
private:
Ui::MainWindow *ui;
QTimer *ptimer;
...
Запускаю в другом месте. Тогда программа сваливается с ошибкой.
Конечно можно разрешать исполнение события таймера по флагу, но если будет несколько таймеров, то это неудобно.
Как правильно запустить и остановить таймер?