QT DAY 4

时钟:

cpp 复制代码
#include "widget.h"
#include "ui_widget.h"

int hour=0;
int min=0;
int sec=0;
int count=0;
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    this->setFixedSize(800,600);
    timer = new QTimer;
    timer->start(1000);

   //int count =0 ;
    connect(timer, &QTimer::timeout,[&](){
        count++;
        update();
    });
 
    //调用QTime的静态成员函数获取当前系统时间
    QTime sys_time = QTime::currentTime();
    //获取时分秒
     hour = sys_time.hour();
     min = sys_time.minute();
    sec=sys_time.second();
    //将时间类对象调用函数转化为字符串
    QString t =sys_time.toString("hh:mm:ss");
}

Widget::~Widget()
{
    delete ui;
}

void Widget::paintEvent(QPaintEvent *event)
{
    //定义画家
    QPainter p(this);
    QPen pen(QColor("black"));
    pen.setWidth(3);
    QBrush b("white");
    p.setPen(pen);
    p.setBrush(b);
    p.translate(this->width()/2,this->height()/2);
    p.drawEllipse(QPoint(0,0),200,200);
    //使用画家绘制
    pen.setColor(QColor("black"));
    p.setPen(pen);
    for(int i=0;i<60;i++)
    {
        p.rotate(6);
        p.drawLine(QPoint(200,0),QPoint(195,0));
    }

    pen.setWidth(5);
    p.setPen(pen);
    for(int i=0;i<12;i++)
    {
        p.drawLine(QPoint(200,0),QPoint(190,0));
        p.rotate(30);
        p.drawText(QPoint(0,-170),QString("%1").arg(i+1));
    }
    //指针时针
    pen.setWidth(10);
    pen.setColor(QColor("red"));
    p.setPen(pen);
    p.rotate(hour*30+6*sec/60/12+30*min/60+6*count/6/12);
    p.drawLine(QPoint(0,-60),QPoint(0,5));

    //指针分针
    QPainter p1(this);
    p1.translate(this->width()/2,this->height()/2);
    pen.setWidth(8);
    pen.setColor(QColor("green"));
    p1.setPen(pen);
    p1.rotate(6*count/60+min*6+6*sec/60);
    p1.drawLine(QPoint(0,-100),QPoint(0,8));


    //指针秒针
    QPainter p2(this);
    p2.translate(this->width()/2,this->height()/2);
    pen.setWidth(6);
    pen.setColor(QColor("yellow"));
    p2.setPen(pen);
    p2.rotate(6*count+6*sec*6);
    p2.drawLine(QPoint(0,-150),QPoint(0,12));
}

time

cpp 复制代码
#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    speecher = new QTextToSpeech(this);
    //实例化一个定时器
    timer = new QTimer(this);
    connect(timer,&QTimer::timeout,this,&Widget::timeout_slot);
    timer->start(1000);//1秒
    ui->evenB->setEnabled(false);



}

Widget::~Widget()
{
    delete ui;
}


//基于属性的按钮对应的槽函数
void Widget::on_objB_clicked()
{

     ui->evenB->setEnabled(true);
    ui->objB->setEnabled(false);
    ui->evenL->setEnabled(false);
    ui->textEdit->setEnabled(false);

}
//处理timeout信号对应的函数
void Widget::timeout_slot()
{
    //调用QTime的静态成员函数获取当前系统时间
    QTime sys_time = QTime::currentTime();
    //获取时分秒
//    int hour = sys_time.hour();
//    int min = sys_time.minute();
//    int sec=sys_time.second();
    //将时间类对象调用函数转化为字符串
    QString t =sys_time.toString("hh:mm:ss");
    ui->objL->setText(t);
    ui->objL->setAlignment(Qt::AlignCenter);
    ui->objL->setFont(QFont("楷体",20));
    if(!ui->objB->isEnabled())
    {
     if(ui->objL->text()==ui->evenL->text())
     {
        ui->evenL->setText("");
        ui->objB->setEnabled(true);
        ui->evenL->setEnabled(true);
        ui->evenB->setEnabled(false);
        ui->textEdit->setEnabled(true);
        QString text = ui->textEdit->toPlainText();
        speecher->say(text);
      }
    }

}
void Widget::on_evenB_clicked()
{

    ui->objB->setEnabled(true);
     ui->evenL->setEnabled(true);
     ui->evenB->setEnabled(false);
     ui->textEdit->setEnabled(true);
}
//定时器事件处理函数的实现
void Widget::timerEvent(QTimerEvent *event)
{

}
相关推荐
神仙别闹几秒前
基于C++ 实现 L 系统分形树
开发语言·c++
君顾11 分钟前
AI智能商城实战指南:从架构设计到部署落地的完整技术方案
java·开发语言·多商户
脉动数据行情17 分钟前
Python WebSocket 国内商品期货|螺纹钢 & 铁矿石实时行情监听
开发语言·python·websocket
AI行业应用研究16 分钟前
2026年主流报名工具测评报告:眨眼猫会务智能体报名小程序为何成为多场景首选?
java·开发语言·小程序
额额额对了20 分钟前
Linux C 多线程编程基础:从内存模型到生命周期管理
linux·开发语言·算法
尼古拉斯-托尔斯泰-赵四34 分钟前
Go 语言,你需要了解的一些规则
开发语言·后端·golang
郝学胜-神的一滴1 小时前
C++20 高级编程 004:从初始化、内存到const系列关键字
开发语言·算法·编程·软件构建·c++20
雪芽蓝域zzs1 小时前
Vue3 + JS + pnpm 创建项目
开发语言·javascript·ecmascript
一晌小贪欢1 小时前
Python办公16:PDF 强力缝合——将几十个 PDF 合并为单个文档并添加页码
开发语言·python·excel·数据可视化·python办公