如何在 QT C++ 中制作秒表?
How to make StopWatch in QT c++?
我正在使用 UI 在 QT 上制作应用程序。另外,我有一个功能。我想显示函数的 运行 时间。我也想暂停秒表。关于如何在我的应用程序中正确嵌入秒表的任何想法?
这是我的代码:
void SomeFunc()
{
while (1)
{
// Start Timer
// some code
// Stop Timer
// Start Timer2
// some code
// Stop Timer2
}
}
on_push_button()
{
auto futureWatcher = new QFutureWatcher<void>(this);
QObject::connect(futureWatcher, &QFutureWatcher<void>::finished, futureWatcher, &QFutureWatcher<void>::deleteLater);
auto future = QtConcurrent::run( [=]{ PackBytes( file_path, file_name, isProgressBar); });
futureWatcher->setFuture(future);
}
使用QElapsedTimer
测量自开始计算以来的持续时间。
从 , you do have a MainWindow
class that contains the on_push_button
function. In that class, declare the QElapsedTimer
member; then start 开始计算时判断。
使用 QTimer
更新用于显示当前持续时间的 GUI 元素(只需要 运行 大约每秒一次)。
示例代码:
在你的头文件中:
#include <QElapsedTimer>
#include <QTimer>
//...
class MainWindow
{
// ... other stuff you have
private:
QTimer m_stopwatchUpdate;
QElapsedTimer m_stopwatchElapsed;
};
在你的 cpp 文件中:
void MainWindow::on_push_button()
{
// ideally do this once only in the constructor of MainWindow:
connect(&m_stopwatchUpdate, &QTimer::timeout, this, [=]{
//.. update GUI elements here...
});
auto futureWatcher = new QFutureWatcher<void>(this);
connect(futureWatcher, &QFutureWatcher<void>::finished, futureWatcher, &QFutureWatcher<void>::deleteLater);
auto future = QtConcurrent::run( [=]{
m_stopwatchElapsed.start();
PackBytes(file_path, file_name, isProgressBar);
});
m_stopwatchUpdate.start(1000);
futureWatcher->setFuture(future);
}
我正在使用 UI 在 QT 上制作应用程序。另外,我有一个功能。我想显示函数的 运行 时间。我也想暂停秒表。关于如何在我的应用程序中正确嵌入秒表的任何想法? 这是我的代码:
void SomeFunc()
{
while (1)
{
// Start Timer
// some code
// Stop Timer
// Start Timer2
// some code
// Stop Timer2
}
}
on_push_button()
{
auto futureWatcher = new QFutureWatcher<void>(this);
QObject::connect(futureWatcher, &QFutureWatcher<void>::finished, futureWatcher, &QFutureWatcher<void>::deleteLater);
auto future = QtConcurrent::run( [=]{ PackBytes( file_path, file_name, isProgressBar); });
futureWatcher->setFuture(future);
}
使用QElapsedTimer
测量自开始计算以来的持续时间。
从 MainWindow
class that contains the on_push_button
function. In that class, declare the QElapsedTimer
member; then start 开始计算时判断。
使用 QTimer
更新用于显示当前持续时间的 GUI 元素(只需要 运行 大约每秒一次)。
示例代码:
在你的头文件中:
#include <QElapsedTimer>
#include <QTimer>
//...
class MainWindow
{
// ... other stuff you have
private:
QTimer m_stopwatchUpdate;
QElapsedTimer m_stopwatchElapsed;
};
在你的 cpp 文件中:
void MainWindow::on_push_button()
{
// ideally do this once only in the constructor of MainWindow:
connect(&m_stopwatchUpdate, &QTimer::timeout, this, [=]{
//.. update GUI elements here...
});
auto futureWatcher = new QFutureWatcher<void>(this);
connect(futureWatcher, &QFutureWatcher<void>::finished, futureWatcher, &QFutureWatcher<void>::deleteLater);
auto future = QtConcurrent::run( [=]{
m_stopwatchElapsed.start();
PackBytes(file_path, file_name, isProgressBar);
});
m_stopwatchUpdate.start(1000);
futureWatcher->setFuture(future);
}