Библиотека chrono
Есть 2 кнопки. При нажатии первой, записалось время нажатия, потом через какое-то время нажимаю вторую кнопку, и уже разница между нажатиями этих кнопок выводится в label на экран.
1 кнопка
void MainWindow::on_pushButton_3_clicked()
{
auto end = high_resolution_clock::now();
duration<float> duration = end - start;
ui->lbl4->setText(QString::number(duration.count()));
}
2 кнопка
void MainWindow::on_pushButton_clicked()
{
auto start = high_resolution_clock::now();
QFile out("text.txt");
if (out.open(QIODevice::Append)){
QTextStream stream(&out);
stream << ui->lineEdit->text() << "\n";
out.close();
}
}
Да, я понимаю что ошибка в том, что я объявляю переменные в кнопках. В этом и вопрос, как правильно это реализовать?
Ответы (1 шт):
Автор решения: Alexander Chernin
→ Ссылка
Есть такая штука в Qt как класс QObject, а в нем есть метод setProperty. Вы можете воспользоваться этим методом в своим коварных целях, например:
void MainWindow::on_pushButton_clicked()
{
auto start = high_resolution_clock::now();
ui->lbl4->setProperty("start", start.time_since_epoch().count()); // Сохраняем отсечку времени
//...
}
Далее
void MainWindow::on_pushButton_3_clicked()
{
qlonglong start = ui->label->property("start").toLongLong();
qlonglong end = high_resolution_clock::now().time_since_epoch().count();
duration<qlonglong> duration(end - start);
ui->lbl4->setText(QString::number(duration.count()));
}