Seite 1 von 1

QTimer will nicht...

Verfasst: 10. August 2017 16:46
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);
}

Re: QTimer will nicht...

Verfasst: 10. August 2017 17:01
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.

Re: QTimer will nicht...

Verfasst: 10. August 2017 18:28
von Grieko
Ah, ok, danke für die Hilfe.
Aber es wird ja auch nicht "QWidget::update()" aufgerufen....

Re: QTimer will nicht...

Verfasst: 10. August 2017 18:49
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.

Re: QTimer will nicht...

Verfasst: 10. August 2017 19:01
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

Re: QTimer will nicht...

Verfasst: 10. August 2017 19:19
von Christian81