QT-day4作业

这篇具有很好参考价值的文章主要介绍了QT-day4作业。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

头文件:

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QPaintEvent>         //绘制事件类
#include <QPainter>          //画家类
#include <QTimer>
#include <QTime>
#include <QDebug>
#include <QBrush>


QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

    //重写绘制事件处理函数
    void paintEvent(QPaintEvent *event) override;

private slots:
    void updateTime();



private:
    Ui::Widget *ui;
    QTimer *timer;
    QPixmap dial;

};
#endif // WIDGET_H

源文件:

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

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    this->setFixedSize(600,600);
    QTimer *timer = new QTimer(this);
    connect(timer,&QTimer::timeout,this,&Widget::updateTime);
    timer->start(1000);
    this->setStyleSheet("background-color:white;");
}

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


//绘制事件处理函数的定义
void Widget::paintEvent(QPaintEvent *event)
{
    Q_UNUSED(event);
    //实例化一个画家
    QPainter painter(this);
    //设置绘图器(QPainter)的渲染提示,开启抗锯齿效果
    painter.setRenderHint(QPainter::Antialiasing);
    //获取当前时间
    QTime currentTime = QTime::currentTime();
    int X=this->width()/2;
    int Y=this->height()/2;
    int radius=200;


    //画个圆
    painter.drawEllipse(QPoint(this->width()/2,this->height()/2),200,200);

    painter.setBrush(QBrush(QColor("skyblue")));    //给画家设置画刷

    //绘制表盘
    painter.setPen(QPen(Qt::black,7));     //设置笔
    if(dial.isNull())
    {
        dial.load("C:\\Users\\m\\Desktop\\123.jpg");
    }
    if(!dial.isNull())
    {
        painter.drawPixmap(X-radius,Y-radius,radius*2,radius*2,dial);
    }


/******************************************************************/

    //绘制时针
    painter.save();    // 保存当前的绘制状态
    painter.translate(X,Y);
    int hour = currentTime.hour();    // 获取当前的小时
    int minute = currentTime.minute();     // 获取当前的分钟
    double hourAngle = (hour%12 + minute/60.0)*30.0;  // 计算时针的角度,考虑分钟对时针的影响
    painter.rotate(hourAngle);    // 旋转坐标系,使时针指向正确的位置
    painter.setPen(QPen(Qt::black,5));    //设置笔
    painter.drawLine(0,0,0,-radius*0.5);  // 绘制时针,起点是坐标原点 (0, 0),终点是时针的末端位置
    painter.restore();       // 恢复之前保存的绘制状态,以便后续绘制

    //绘制分针
    painter.save();
    painter.translate(X,Y);
    double minuteAngle = minute*6.0;
    painter.rotate(minuteAngle);
    painter.setPen(QPen(Qt::red,3));        //设置笔
    painter.drawLine(0,0,0,-radius*0.7);
    painter.restore();

    //绘制秒针
    painter.save();
    painter.translate(X,Y);
    int second = currentTime.second();
    double secondAngle = second * 6.0;
    painter.rotate(secondAngle);
    painter.setPen(QPen(Qt::blue,2));      //设置笔
    painter.drawLine(0,0,0,-radius*0.9);
    painter.restore();

}


void Widget::updateTime()
{
    update();
}

QT-day4作业,qt,开发语言文章来源地址https://www.toymoban.com/news/detail-732558.html

到了这里,关于QT-day4作业的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • QT DAY6作业

    1.学生管理系统,基于QT的数据库中数据表的增删改查 头文件 源文件 修改效果图 删除效果图 2.MP4视频的灰度显示和均衡模式 源文件 效果图 3.思维导图

    2024年01月16日
    浏览(37)
  • QT 作业 day4 7/28

    1.思维导图     2.手动完成服务器实现 .h .cpp

    2024年02月15日
    浏览(53)
  • qt图形化界面开发DAY4

    2024年01月23日
    浏览(34)
  • QT支持多种开发语言

    QT主要是一个C++应用程序框架,但它也提供了对其他一些编程语言的官方或非官方支持。以下是QT支持的一些语言版本及其特点。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1.Python (PyQt)  : PyQt是QT的官方Python绑定,允许Python开发者使用QT库来创建

    2024年04月29日
    浏览(49)
  • 【Visual Studio】Qt 的实时绘图曲线功能,使用 C++ 语言,配合 Qt 开发串口通信界面

    知识不是单独的,一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏:Visual Studio。 战斗背景:做了个串口接收界面,用来接收传输过来的信号。但是光用数字显示太单调,需要用图线显示出来。 战略目标:干掉它。 战术路线:Qt 绘图可以使用 Qt Charts,先了解

    2024年02月11日
    浏览(52)
  • 【VisualStudio】使用 C++ 语言开发 Qt 环境配置教程

    知识不是单独的,一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏:Visual Studio。 先上一张效果图,具体步骤主要分为以下三步。 这一步不再赘述,注意一定要安装 C++ 语言。 可以参考这个教程 Visual Studio 2022安装与使用教程。 这一步也不再赘述,网上搜索教

    2024年02月10日
    浏览(77)
  • QT作业4

    实现一个闹钟,当输入时间后,点击启动到达时间后循环播报三遍,便签内容 头文件: 源文件: 主函数文件: 运行结果: 思维导图:

    2024年02月04日
    浏览(37)
  • QT周五作业

    题目:实现简单水果的价格重量计算 点击一次水果重量+1  自动计算总价 代码: widget.h widget.cpp

    2024年02月02日
    浏览(42)
  • 7.26 作业 QT

    1.继续完善登录框,当登录成功时,关闭登录界面,跳转到新的界面中: 结果图:  second.h: widget.h: main.cpp: second.cpp: widget.cpp: 2.新建一个工程文件,将默认提供的代码加上注释信息: .pro: 3.思维导图:

    2024年02月15日
    浏览(56)
  • 7.27 作业 QT

    要求:  结果图: clock.pro:  widget.h: widget.cpp: widget.ui: 思维导图:  

    2024年02月15日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包