QT代码框架小案例:一个简单的时间类(Time)及其实例化程序,模拟了时间的设置、显示和自动流逝功能,类似一个简易电子时钟。

一、代码框架

二、运行终端显示

三、代码详细注释

test.pro

复制代码
# 指定项目类型为应用程序(而非库或其他类型)
TEMPLATE = app

# 配置项目:启用控制台输出,使用C++11标准
CONFIG += console c++11

# 移除配置:不生成应用程序捆绑包(主要用于macOS等平台)
CONFIG -= app_bundle

# 移除配置:不使用Qt框架
CONFIG -= qt

# 源文件列表:列出项目中所有的.cpp源文件
SOURCES += \
        main.cpp \
        mytime.cpp

# 头文件列表:列出项目中所有的.h头文件
HEADERS += \
    mytime.h

mytime.h

复制代码
#ifndef MY_TIME_H
#define MY_TIME_H
// 时间类
class Time {
public:
// 构造函数
Time (int h=23,int m=59,int s=55);
// 接口 --- 成员函数
// 设置和获取小时的接口
void set_hour (int h);
int get_hour ();
// 设置时间
void set_time (int h=23,int m=59,int s=55);
// 打印时间
void print_time ();
// 时间运行(流逝)
void run ();
private:// 私有成员
// 数据 --- 成员变量
int hour;// 时
int min;// 分
int sec;// 秒
};
#endif // MY_TIME_H

main.cpp

复制代码
//#include <iostream>
//#include "mytime.h"

//using namespace std;

//int main()
//{
//    Time t;

//    return 0;
//}


#include <iostream>
#include "mytime.h"
#include <unistd.h> // Linux/Unix系统休眠函数头文件
// #include <windows.h> // Windows系统需替换为该头文件

using namespace std;

int main()
{
    Time t;  // 创建Time对象,默认初始时间23:59:55

    // 无限循环,持续更新并显示时间
    while (true) {
        t.print_time();  // 显示当前时间(格式HH:MM:SS)
        t.run();         // 时间递增1秒
        sleep(1);        // 休眠1秒(Linux/Unix)
        // Sleep(1000);   // Windows系统使用该语句,单位为毫秒
        cout.flush();    // 强制刷新输出,确保时间实时显示
    }

    return 0;
}

mytime.cpp

复制代码
#include "mytime.h"
#include <iostream>
#include <unistd.h>
#include <iomanip>

using namespace std;

// 构造函数实现,初始化时、分、秒
Time::Time(int h, int m, int s) : hour(h), min(m), sec(s)
{
}

// 设置小时
void Time::set_hour(int h)
{
    hour = h;
}

// 获取小时
int Time::get_hour()
{
    return hour;
}

// 设置时间(时、分、秒)
void Time::set_time(int h, int m, int s)
{
    hour = h;
    min = m;
    sec = s;
}

// 打印时间,格式为 HH:MM:SS,不足两位的数字前补0
void Time::print_time()
{
    std::cout << setw(2) << setfill('0') << hour << ":"
              << setw(2) << setfill('0') << min << ":"
              << setw(2) << setfill('0') << sec << "\r";
}

// 时间运行(每秒递增1秒,并处理进位逻辑)
void Time::run()
{
    sec++;
    if (sec == 60) {       // 秒满60进1分钟
        sec = 0;
        min++;
        if (min == 60) {   // 分钟满60进1小时
            min = 0;
            hour++;
            if (hour == 24) {  // 小时满24重置为0
                hour = 0;
            }
        }
    }
}
相关推荐
偶像你挑的噻5 小时前
11-Linux驱动开发-I2C子系统–mpu6050简单数据透传驱动
linux·驱动开发·stm32·嵌入式硬件
Chat_zhanggong3457 小时前
K4A8G165WC-BITD产品推荐
人工智能·嵌入式硬件·算法
强化学习与机器人控制仿真7 小时前
RSL-RL:开源人形机器人强化学习控制研究库
开发语言·人工智能·stm32·神经网络·机器人·强化学习·模仿学习
bai5459367 小时前
STM32 PWM驱动LED呼吸灯
stm32·单片机·嵌入式硬件
智者知已应修善业8 小时前
【51单片机普通延时奇偶灯切换】2023-4-4
c语言·经验分享·笔记·嵌入式硬件·51单片机
btzhy13 小时前
STM32单片机:基本定时器应用:单脉冲模式(STM32L4xx)
stm32·单片机·嵌入式硬件·基本定时器应用:单脉冲模式
文sir.15 小时前
温湿度采集系统(stm32+mqtt+Onenet云平台+esp8266)
stm32·单片机·嵌入式硬件·mqtt·onenet·云平台·esp8266
DIY机器人工房15 小时前
嵌入式面试题:你有没有用过直接基于TCP协议,不借助HTTP、MQTT这类上层协议的项目经历?
stm32·单片机·嵌入式硬件·面试题·diy机器人工房
zhmc17 小时前
Cortex M0单片机指令执行周期
单片机·嵌入式硬件
编程小白菜12317 小时前
STM32L051单片机485Ymode升级后程序不能正常运行问题
stm32·嵌入式硬件