QTimer will nicht...

Alles rund um die Programmierung mit Qt
Antworten
Grieko
Beiträge: 17
Registriert: 12. Oktober 2016 08:50

QTimer will nicht...

Beitrag von Grieko »

Hallo,
ich bin in Sachen Qt noch Anfänger, und stehe deshalb vermutlich vor einem einfachen Problem:
Ich habe nur ein einfaches Fenster (mainwindow), im Hintergrund soll zyklisch jede Sekunde eine Funktion aufgerufen werden.
Leider passiert einfach nichts, auch beim Debuggen wird die Funktion update nicht aufgerufen.
Sieht da jemand den Fehler ?

Beim Beenden des Debuggers erscheint folgende Meldung:

QObject::connect: Parentheses expected, signal QTimer::timeout in ..\KM_Rasp\mainwindow.cpp:84
QObject::connect: (receiver name: 'MainWindow')


Greets
Grieko



Mein Code dazu sieht so aus:

Code: Alles auswählen

{
...
private:
    QTimer *timer1;

public slots:
    void update();
}


MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    timer1 = new QTimer(this);
    connect(timer1,SIGNAL(timeout),this,SLOT(update));
    timer1->setInterval(1000);
    timer1->setSingleShot(false);
    timer1->start();
}

void MainWindow::update()
{
    static int u=0;

    ui->spinBox_18->setValue(++u);
}
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: QTimer will nicht...

Beitrag von Christian81 »

Das Signal heißt 'SIGNAL(timeout())' und der Slot 'SLOT(update())'
Besser das neue connect benutzen:

Code: Alles auswählen

connect(timer1, &QTimer::timeout, this, &MainWindow::update);
Abgesehen davon weiß ich nicht warum ein Timer sekündlich QWidget::update() aufrufen müsste.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Grieko
Beiträge: 17
Registriert: 12. Oktober 2016 08:50

Re: QTimer will nicht...

Beitrag von Grieko »

Ah, ok, danke für die Hilfe.
Aber es wird ja auch nicht "QWidget::update()" aufgerufen....
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: QTimer will nicht...

Beitrag von Christian81 »

Eine Funktion so zu nennen wie eine Funktion in einer abgeleiteten Klasse und dann was anderes zu machen ist nicht gerade guter Stil ...
Zumal QWidget::update() auch ein Slot ist und wenn irgendwo innerhalb des Qt-Codes QWidget::update() per SLOT aufgerufen wird, wird deine update() - Funktion aufgerufen und schon funktioniert etwas nicht so wie erwartet.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Grieko
Beiträge: 17
Registriert: 12. Oktober 2016 08:50

Re: QTimer will nicht...

Beitrag von Grieko »

Da hast Du Recht, wobei ich nirgendwo was von einer vorhandenen "Update" Funktion gefunden habe.
Letztendlich ist das Programm hier eh nur ein kleiner Test, der dank deiner Hilfe jetzt auch funktioniert
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: QTimer will nicht...

Beitrag von Christian81 »

MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten