Передача текущей переменной времени
Я пытаюсь получить окно редактирования текста для отображения текущего времени каждые 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
}