Доброго времени суток! Написал небольшой класс и в нем QTimer, но при вызове start() приложение входит в вечный цикл. С моей точки зрения, все норм, но видимо, что-то я не учел.
myclass.h
#include <QObject>
#include <QTimer>
class MyClass: public QObject
{
Q_OBJECT
public:
MyClass(QObject *parent = 0);
void start();
virtual ~MyClass();
public slots:
void showMessage();
private:
QTimer *timer;
};
myclass.cpp
#include "myclass.h"
#include <iostream>
MyClass::MyClass(QObject *p): QObject(p)
{
timer = new QTimer(this);
QObject::connect(timer, &QTimer::timeout, this, &MyClass::showMessage);
}
void MyClass::showMessage()
{
timer->stop();
std::cout << "Hello World!";
}
void MyClass::start()
{
timer->start(1);
}
MyClass::~MyClass()
{
delete timer;
}
main.cpp
#include <QCoreApplication>
#include "myclass.h"
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
MyClass my;
my.start();
return a.exec();
}
Не понимаю в чём вопрос. У меня этот код собирается и работает корректно. Если у Вас не выводится "Hello World!", то это проблемы как я думаю именно с выводом (оно, скорее всего, выводит, просто Вы не видите куда). Можете попробовать создать Widget что бы было точно видно-заметно. Если вопрос в том, почему приложение не останавливается - а почему оно должно? Сам таймер останавливается, но цикл обработки событий продолжается. Можете попробовать дописать например exit(0) в ваш слот - тогда приложение завершится (с кодом 0).
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости