You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

72 lines
2.2 KiB
C++

#include "ClockCounter.h"
ClockCounter::ClockCounter(QWidget *parent) : QMainWindow(parent)
{
ui.setupUi(this);
ui.SpliterHourMinute->Init(UDateTimeSpliter::Type::Time);
ui.SpliterMinuteSecond->Init(UDateTimeSpliter::Type::Time);
ui.SpliterSecondMS->Init(UDateTimeSpliter::Type::Dots);
connect(ui.BtnStartTimer, &QPushButton::clicked, this, &ClockCounter::StartTimer);
connect(ui.BtnStopTimer, &QPushButton::clicked, this, &ClockCounter::StopTimer);
connect(ui.BtnGetPreclickPos, &QPushButton::clicked, this, &ClockCounter::ShowPreClickWindow);
connect(ui.BtnClearPreclickPos, &QPushButton::clicked, this, &ClockCounter::ClearPreClickInfo);
connect(&CountTimer, &QTimer::timeout, this, &ClockCounter::CountCallback);
CountTimer.setInterval(1);
CountTime = 0;
}
ClockCounter::~ClockCounter()
{
}
void ClockCounter::StartTimer()
{
if (CountTime != 0)
{
ui.BtnStartTimer->setText("开始计时");
CountTime = -1;
CountCallback();
}
else
CountTimer.start();
}
void ClockCounter::StopTimer()
{
CountTimer.stop();
ui.BtnStartTimer->setText("重置计时器");
}
void ClockCounter::ShowPreClickWindow()
{
if (!pre_click_window.isActiveWindow())
{
pre_click_window.show();
pre_click_window.activateWindow();
pre_click_window.setWindowState((pre_click_window.windowState() & ~Qt::WindowMinimized) | Qt::WindowActive);
}
}
void ClockCounter::ClearPreClickInfo()
{
}
void ClockCounter::CountCallback()
{
CountTime++;
int hour = (CountTime / 1000) / 3600;
int minute = ((CountTime / 1000) / 60) - (hour * 60);
int second = (CountTime / 1000) - (hour * 3600) - (minute * 60);
int millsecond = CountTime - (hour * 3600 * 1000) - (minute * 60 * 1000) - (second * 1000);
ui.NumHour01->setNumber(hour / 10);
ui.NumHour02->setNumber(hour % 10);
ui.NumMinute01->setNumber(minute / 10);
ui.NumMinute02->setNumber(minute % 10);
ui.NumSecond01->setNumber(second / 10);
ui.NumSecond02->setNumber(second % 10);
ui.NumMillSec01->setNumber(millsecond / 100);
ui.NumMillSec02->setNumber((millsecond / 10) % 10);
ui.NumMillSec03->setNumber((millsecond % 100) % 10);
return;
}