广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++Qt绘制时钟界面
  • 219
分享到

C++Qt绘制时钟界面

2024-04-02 19:04:59 219人浏览 独家记忆
摘要

首先来看一下效果: 大概就是这样子,需要注意的是,这里你需要创建一个基类为Widget的界面来绘制时钟,以至于后期你想把这个时钟放到任意一个界面,你只需要在那个界面的ui里面添加一

首先来看一下效果:

大概就是这样子,需要注意的是,这里你需要创建一个基类为Widget的界面来绘制时钟,以至于后期你想把这个时钟放到任意一个界面,你只需要在那个界面的ui里面添加一个widget,然后将它提升为这个时钟界面,并设定它的大小。

widget.h文件


#ifndef WIDGET_H
#define WIDGET_H
 
#include<math.h>
#include<QResizeEvent>
#include<QGroupBox>
#include<Qtimer>
#include<QTime>
#include<QPainter>
 
#include <QWidget>
 
namespace Ui {
class Widget;
}
 
class Widget : public QWidget
{
    Q_OBJECT
 
public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();
protected:
    void paintEvent(QPaintEvent *event);
 
private:
    Ui::Widget *ui;
};
 
#endif // WIDGET_H

widget.cpp文件


#include "widget.h"
#include "ui_widget.h"
 
Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    QTimer *timer = new QTimer(this);  //连接信号与槽
    connect(timer, SIGNAL(timeout()), this, SLOT(update()));
    timer->start(1000);
    //设置窗体名称与大小
    setWindowTitle(tr("Clock"));
    ui->setupUi(this);
    resize(350,350);
}
 
Widget::~Widget()
{
    delete ui;
}
 
void Widget::paintEvent(QPaintEvent *event)
{
    static const QPoint hourHand[3] =
    {
        QPoint(5, 14),
        QPoint(-5, 14),
        QPoint(0, -50)
    };
    static const QPoint minuteHand[3] =
    {
        QPoint(5, 14),
        QPoint(-5,14),
        QPoint(0, -70)
    };
    static const QPoint secondHand[3] =
    {
        QPoint(5, 14),
        QPoint(-5, 14),
        QPoint(0, -80)
    };
    static const QPoint line_long[2]=
    {
        QPoint(0,100),
        QPoint(0,80)
    };
    static const QPoint line_short[2]={
        QPoint(0,100),
        QPoint(0,95)
    };
    //绘制的范围
    int side = qMin(width(), height());
    //获取当前的时间
    QTime time = QTime::currentTime();
    //声明用来绘图用的painter
    QPainter painter(this);
    //绘制的图像反锯齿
    painter.setRenderHint(QPainter::Antialiasing);
    //重新定位坐标起始点,把坐标原点放到窗体的中央
    painter.translate(width() / 2, height() / 2);
    //在表盘内添加文字(任意)
    //painter.drawText(-75,-120,100,170,Qt::AlignRight,tr("ROLEX"));
    //设定画布的边界
    painter.scale(side / 200.0, side / 200.0);
    //填充边线设为黑色,也可以设置为NoPen
    painter.setPen( Qt::black );
    //画刷颜色设定
    painter.setBrush(Qt::black);
    //保存painter的状态
    painter.save();
    //设置painter的旋转角度
    painter.rotate(30.0 * ((time.hour() + time.minute() / 60.0)));
    //填充时针的区域
    painter.drawConvexPolyGon(hourHand, 3);
    painter.restore();
    painter.setPen(Qt::black);
    //12个个刻度循环
    for (int i = 0; i < 12; ++i)
    {
        painter.drawLine(line_long[0],line_long[1]);
        painter.rotate(30.0);
    }
    //绘制分针转角、刻度
    painter.setPen(Qt::black);
    painter.setBrush(Qt::black);
    painter.save();
    painter.rotate(6.0 * (time.minute() + time.second() / 60.0));
    painter.drawConvexPolygon(minuteHand, 3);
    painter.restore();
    painter.setPen(Qt::black);
    for (int j = 0; j < 60; ++j)
    {
        if ((j % 5) != 0)
        painter.drawLine(line_short[0],line_short[1]);
        painter.rotate(6.0);
    }
 
     //绘制分针转角、刻度
    painter.setPen(Qt::black);
    painter.setBrush(Qt::black);
    painter.save();
    painter.rotate(6.0 * (time.minute() + time.second() / 60.0));
    painter.drawConvexPolygon(minuteHand, 3);
    painter.restore();
    painter.setPen(Qt::black);
    for (int j = 0; j < 60; ++j)
    {
        if ((j % 5) != 0)
        painter.drawLine(line_short[0],line_short[1]);
        painter.rotate(6.0);
    }
   //绘制秒针转角
    painter.setPen(Qt::black);
    painter.setBrush(Qt::black);
    painter.save();
    painter.rotate(6.0*time.second());
    painter.drawConvexPolygon(secondHand,3);
    painter.restore();
 
}

main.cpp文件


#include "widget.h"
#include <QApplication>
 
int main(int arGC, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    return a.exec();
}

到此这篇关于c++ Qt绘制时钟界面的文章就介绍到这了,更多相关C++ Qt绘制时钟内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C++Qt绘制时钟界面

本文链接: https://www.lsjlt.com/news/161261.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++Qt绘制时钟界面
    首先来看一下效果: 大概就是这样子,需要注意的是,这里你需要创建一个基类为Widget的界面来绘制时钟,以至于后期你想把这个时钟放到任意一个界面,你只需要在那个界面的ui里面添加一...
    99+
    2022-11-12
  • C++中Qt如何绘制时钟界面
    这篇文章给大家分享的是有关C++中Qt如何绘制时钟界面的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。首先来看一下效果:大概就是这样子,需要注意的是,这里你需要创建一个基类为Widget的界面来绘制时钟,以至于后期...
    99+
    2023-06-22
  • C#如何绘制时钟
    今天小编给大家分享一下C#如何绘制时钟的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。时钟是这样的一共使用四个控件即可:Win...
    99+
    2023-07-02
  • C#绘制时钟的方法
    本文实例为大家分享了使用C#写一个时钟,供大家参考,具体内容如下 时钟是这样的 一共使用四个控件即可: WinFrom窗体应用程序代码: using SpeechLib; us...
    99+
    2022-11-13
  • C#实现图形界面的时钟
    本文实例为大家分享了C#实现图形界面的时钟的具体代码,供大家参考,具体内容如下 秒针有跳跃两个格子问题,主要是算法耗时没考虑在TimeTicker的触发事件内,导致程序运行有延迟。 ...
    99+
    2022-11-13
  • C语言基于EasyX绘制时钟
    本文实例为大家分享了C语言基于EasyX绘制时钟的具体代码,供大家参考,具体内容如下 函数说明: void line(     int x1,     int y1,     int...
    99+
    2022-11-13
  • C#如何实现图形界面的时钟
    今天小编给大家分享一下C#如何实现图形界面的时钟的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。秒针有跳跃两个格子问题,主要是...
    99+
    2023-07-02
  • C语言绘制简单时钟小程序
    本文实例为大家分享了C语言绘制时钟小程序的具体代码,供大家参考,具体内容如下 先贴效果图给大家先看看 基本机制是通过获取系统的时钟去绘制图线进行展示 贴出代码 ,大家可以直接使用的...
    99+
    2022-11-13
  • 使用Qt QSS绘制简单美化界面功能
    目录使用Qt绘制一个简约美观的界面-使用QSS简单美化基本控件布局界面的简单美化 QSS添加图片方法1:添加资源方法2:直接指定图片在计算机中的绝对 / 相对路径使用Qt绘制一个简约...
    99+
    2022-11-11
  • CSS如何绘制时钟
    这篇文章主要介绍了CSS如何绘制时钟,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1. CSS3Gen - CSS3动画生成器CSS3Gen...
    99+
    2022-10-19
  • C语言如何绘制简单时钟小程序
    本篇内容介绍了“C语言如何绘制简单时钟小程序”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!先贴效果图给大家先看看基本机制是通过获取系统的时钟...
    99+
    2023-07-02
  • html5怎么绘制时钟动画
    本文小编为大家详细介绍“html5怎么绘制时钟动画”,内容详细,步骤清晰,细节处理妥当,希望这篇“html5怎么绘制时钟动画”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。 &l...
    99+
    2022-10-19
  • 详解C/C++ QT QChart 绘制组件应用
    QtCharts 组件是QT中提供图表绘制的模块,该模块可以方便的绘制常规图形,Qtcharts 组件基于GraphicsView模式实现,其核心是QChartView和QChart...
    99+
    2022-11-12
  • C语言基于EasyX库实现有图形界面时钟
    本文实例为大家分享了C语言基于EasyX库实现有图形界面时钟的具体代码,供大家参考,具体内容如下 1.目标要求: 1.实现一个显示图像的时钟2.时间与本地时间一致 2.C语言代码: ...
    99+
    2022-11-13
  • 如何使用纯html5绘制时钟
    这篇文章主要介绍如何使用纯html5绘制时钟,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一起看下效果图:  实现的代码。  htm代码:XML/HTML Code复制内容到剪贴板&...
    99+
    2022-10-19
  • Python绘制时钟的示例代码
    目录导入需要的包设置变量写数字绘制时针完整代码导入需要的包设置变量 from datetime import datetime from pygame.locals import *...
    99+
    2022-11-13
  • Python+Tkinter绘制一个数字时钟
    Tkinter 实现上述功能并不复杂,只要使用 Tkinter 的相关组件和一些简单的逻辑处理即可,在编写这个案例的过程中大家要做到温故而知新。 程序代码如下所示: from tki...
    99+
    2022-11-13
  • 怎么使用C/C++ QT的QChart绘制组件
    本篇内容主要讲解“怎么使用C/C++ QT的QChart绘制组件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用C/C++ QT的QChart绘制组件”吧!QtCharts 组件是QT中提...
    99+
    2023-06-25
  • 基于Python绘制一个摸鱼倒计时界面
    目录前言实现过程前言 前段时间在微博看到一段摸鱼人的倒计时模板,感觉还挺有趣的。 于是我用了一小时的时间写了个页面出来 摸鱼办地址 (当然是摸鱼的时间啦)。 模板是这样的: 摸鱼办...
    99+
    2022-11-12
  • 如何使用canvas绘制超炫时钟
    这篇文章主要介绍“如何使用canvas绘制超炫时钟”,在日常操作中,相信很多人在如何使用canvas绘制超炫时钟问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用canv...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作