QT绘制闹钟(未完善)

该代码示例展示了如何在Qt环境中创建一个Widget,实现鼠标追踪、点击和双击事件,同时使用QTimer进行定时更新UI,如显示当前时间和日期。通过信号槽机制,当用户点击按钮时,可以启动或停止计时器。
摘要由CSDN通过智能技术生成

代码

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    //开启鼠标追踪
    this->setMouseTracking(true);
    time1 = new QTimer(this); //一旦启动发射信号

    connect(time1,&QTimer::timeout,this,&Widget::on_timeout);
}

Widget::~Widget()
{
    delete ui;

}
//鼠标移动事件
void Widget::mouseMoveEvent(QMouseEvent *event)
{
        //ui->la1->setText(QString("%1,%2").arg(event->x()).arg(event->y()));
        //qDebug() << "鼠标移动";
}

//鼠标按下事件
void Widget::mousePressEvent(QMouseEvent *event)
{
    if( Qt::LeftButton == event->button())
    {
        ui->la1->setText("鼠标左键被按下");
        qDebug() << "鼠标左键被按下";
    }
}

//鼠标松开事件
void Widget::mouseReleaseEvent(QMouseEvent *event)
{
    qDebug() << "鼠标左键松开";
}
//鼠标双击事件
void Widget::mouseDoubleClickEvent(QMouseEvent *event)
{
    qDebug() << "鼠标双击";
}

//会执事件的重写
void Widget::initPainter(QPainter *painter) const
{
    static int num = 0;

    qDebug() << num++;
}

//处理time_out
void Widget::on_timeout()
{
//    static int count = 0;
//    ui->l2->setNum(count++);
    QTime t = QTime::currentTime();
    QString t1 = t.toString("hh:mm:ss:zzz");

    ui->l2->setText(t1);
}

//

void Widget::on_bton1_clicked()
{
    qDebug() << "按钮被击";
    if(ui->bton1->text() == "启动")
    {
        //执行启动功能
        time1->start(100);     //1秒后会自动发射一次信号
        //将按钮文本内容改成关闭
        ui->bton1->setText("关闭");
    }else if(ui->bton1->text() == "关闭")
    {
        //执行关闭功能
        time1->stop();     //停止一个定时器
        //将按钮的文本内容改成启动
        ui->bton1->setText("启动");
    }
}
///
//点击按钮触发信号
void Widget::on_bton2_clicked()
{
    if(ui->bton2->text() == "启动")
    {
        //启动时间
         time_1 = this->startTimer(1000);

        //将按钮文本内容改成关闭
        ui->bton2->setText("关闭");
    }else if(ui->bton2->text() == "关闭")
    {
        //启动时间
        this->killTimer(time_1);
        //将按钮文本内容改成启动
        ui->bton2->setText("启动");


    }
}
///
void Widget::timerEvent(QTimerEvent *event)
{
//    static int count = 0;
//    ui->l3->setNum(count++);

    //获取系统日期事件

    QDateTime sys_time = QDateTime::currentDateTime();

    //将日期时间转变为字符串
    QString daytime = sys_time.toString("yyyy:MM:dd hh:mm:ss");
    //将事件展示到ui界面
    ui->l3->setText(daytime);


}

运行效果如下:

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值