Передача текущей переменной времени

Я пытаюсь получить окно редактирования текста для отображения текущего времени каждые 5 секунд, используя QTimer. У меня есть текущее время в отдельном методе, а затем QTimer вызывает этот метод и отображает текущее время. Я не могу на всю жизнь понять, как передать переменную из метода setCurrentTime в QTimer. Я уверен, что это действительно легко исправить, но я не могу понять это. Вот мой код

void noheatmode::setCurrentTime()
{
   QTime time = QTime::currentTime();
   QString sTime = time.toString("hh:mm:mm");
   // ui->tempTimeNoHeatMode->append(sTime);

}

void noheatmode::on_timeButton_clicked()
{


    QTimer *timer =new QTimer(this);
    connect(timer,SIGNAL(timeout()), this, SLOT(setCurrentTime()));
    timer->start(5000);
    ui->tempTimeNoHeatMode->append(sTime);
}

2 ответа

Решение

Если я правильно понял вашу проблему, у вас просто переменная минут вместо секунд. Просто измените "чч: мм: мм" на "чч: мм: сс"

void noheatmode::setCurrentTime()
{
    QTime time = QTime::currentTime();
    QString sTime = time.toString("hh:mm:ss");
    ui->tempTimeNoHeatMode->append(sTime);
}

С вашим кодом:

void noheatmode::on_timeButton_clicked()
{
    QTimer *timer =new QTimer(this);
    connect(timer,SIGNAL(timeout()), this, SLOT(setCurrentTime()));
    timer->start(5000);
    ui->tempTimeNoHeatMode->append(sTime);
}

Это означает, что функция внутри SLOT будет называться каждый 5000 миллисекунды которые = 5 секунд. Что можно сделать, так это установить функцию setCurrentTime() обновлять текстовое поле каждый раз, когда оно вызывается.

Пример:

void Class::setCurrentTime()
{
    QTime times = (QTime::currentTime());
    QString currentTime=times.toString("hh:mm:ss");
    ui->label->setText(currentTime); 
    //Assuming you are using a label to output text, else substitute for what you are using instead
    //Every time this function is called, it will receive the current time 
    //and update label to display the time received
}
Другие вопросы по тегам