【Qt开发1】Qt钟表的简单实现

Qt钟表的简单实现

先上效果图
Kagome's clock
一.钟表实现原理
设置定时器timer,每隔1000毫秒(即1s)发送timeout()信号到槽函数update(),重绘事件函数paintEvent(QPaintEvent*event)

	QTimer*timer=new QTimer(this);
    timer->start(1000);
    connect(timer,SIGNAL(timeout()),this,SLOT(update()));

二.钟表的绘制
拆分钟表:表盘 数字 刻度线 指针

paintEvent(QPaintEvent*event)
1.表盘

    painter.setPen(QPen(Qt::white,5,Qt::DashLine,Qt::RoundCap));
    painter.drawEllipse(50,90,500,500);

2.十二个数字

int r=250;
    for (int i=1;i<=12;i++) {
            painter.drawText(287+r*0.77*sin(2*PI/12*i),355-r*0.77*cos(2*PI/12*i),QString::number(i));

    }

注意:要注意界面x,y轴的正方向
(如果用旋转坐标轴的方法实现数字的位置,1-12的数字不能正向站立,不建议使用)

3.刻度线

    painter.translate(300,340);
    painter.save();
    //时段线
    for (int i=0;i<4;++i) {
        painter.drawLine(220,0,250,0);
        painter.rotate(90);
    }
    //小时线
    painter.setPen(QPen(Qt::white,3,Qt::DashLine,Qt::RoundCap));
    for (int i=0;i<12;++i) {
        painter.drawLine(230,0,250,0);
        painter.rotate(30);
    }
    painter.restore();

通过旋转坐标轴的方法绘制刻度线

4.指针
时针为例

//绘制针
   static QPoint hourhand[4]={
        QPoint(12,14),QPoint(0,25),QPoint(-12,14),QPoint(0,-100)};

确定针的点,再用 painter.drawConvexPolygon()函数绘制。

三.钟表转动实现
通过转动坐标轴,来实现即时绘制。
还是以时针转动为例。

   QTime time=QTime::currentTime();//获取当前系统时间
   painter.save();
   
   //时针转动
   painter.setPen(Qt::NoPen);
   painter.setBrush(QColor(240,140,40,150));
   painter.rotate(30*((time.hour()+time.minute()/60)));
   painter.drawConvexPolygon(hourhand,4);
   painter.restore();

这样一个简单的钟表就实现啦!~

若有不足欢迎大家多多指出,第一次写博客,内心有亿、、激动。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt是一种跨平台的应用程序开发框架,它可以用于开发各种类型的应用程序,包括WiFi模块开发。下面是一些实现WiFi模块开发的步骤: 1. 安装Qt开发环境:首先需要安装Qt开发环境,可以从Qt官方网站下载相应的版本。安装完成后,启动Qt Creator。 2. 创建项目:在Qt Creator中,选择“File”菜单,然后选择“New Project”。在弹出的对话框中,选择“Qt Console Application”,然后点击“Choose”。输入项目名称和位置,然后点击“Next”和“Finish”。 3. 添加Qt网络模块:在Qt Creator中,选择“Projects”窗口,在左侧的菜单中选择“Build & Run”。在右侧的菜单中选择“Add Build Step”,然后选择“qmake”。 4. 编写代码:为了实现WiFi模块开发,需要使用Qt的网络模块。可以使用Qt的QNetworkAccessManager类来处理网络连接。在代码中,可以使用以下代码来创建一个QNetworkAccessManager对象: ``` QNetworkAccessManager manager; ``` 可以使用以下代码来发送请求: ``` QNetworkRequest request; request.setUrl(QUrl("http://www.example.com")); QNetworkReply *reply = manager.get(request); ``` 可以使用以下代码来处理响应: ``` connect(reply, SIGNAL(finished()), this, SLOT(replyFinished())); ``` 其中,replyFinished()是一个槽函数,用于处理响应。 5. 编译和运行:在Qt Creator中,选择“Build”菜单,然后选择“Build Project”。如果编译成功,可以选择“Run”菜单,然后选择“Run”来运行程序。 以上就是使用Qt实现WiFi模块开发的步骤。需要注意的是,实际开发过程中可能涉及到更多的细节和复杂的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值