Entweder du schiebst den timer mit in TestKonsole, dann mit this oder du machst folgendes.
Code: Alles auswählen
#include <QtCore/QCoreApplication>
#include <QTimer>
#include <iostream>
class TestKonsole : public QObject
{
Q_OBJECT
public slots:
void checkTimer();
};
int main(int argc, char *argv[])
{
TestKonsole myKonsole;
QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), &myKonsole, SLOT(checkTimer()));
timer->start(1000);
}
void TestKonsole::checkTimer()
{
std::cout << "timer..." << std::endl;
}
Du befindest dich dort doch außerhalb der Klasse. Da macht ein this Zeiger auf die Klasse wenig Sinn.
Beachte außerdem das Q_OBJECT, welches benötigt wird, wenn du Slots benutzen möchtest. Dafür musst du dann auch von irgendeiner Klasse abgeleitet haben, die von QObject abstammt. Wenn das nicht vorliegt, dann eben von QObject selber.
Da ich gerade dem Editierwahn verfallen bin und mir ständig bessere Ideen kommen, würde es in diesem Fall Sinn machen, von QTimer abzuleiten und dort deinen Slot einzubauen.
Code: Alles auswählen
#include <QtCore/QCoreApplication>
#include <QTimer>
#include <iostream>
class TestTimerKonsole : public QTimer
{
Q_OBJECT
public slots:
void checkTimer();
};
int main(int argc, char *argv[])
{
TestTimerKonsole myKonsole;
connect(&myKonsole, SIGNAL(timeout()), &myKonsole, SLOT(checkTimer()));
myKonsole.start(1000);
}
void TestTimerKonsole::checkTimer()
{
std::cout << "timer..." << std::endl;
}
Das connect würde auch besser im Konstruktor der Klasse passen. Aber ich erspare mir das aufgrund der Schreibarbeit hier.
Ich hoffe das ist dir genug Auseinandergenommen und du verstehst das Thema nun

.