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++
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;
|
|
}
|