0911(绘制事件,qt中的网络通信)

news2024/9/23 22:28:11

一、实现一个时钟

1)代码

头文件:

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QPainter>
#include <QPaintEvent>
#include <QTimer>
#include <QTime>
#include <QTimerEvent>

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:
    Ui::Widget *ui;
    QTimer t1;  //定义一个定时器变量
    int hh=0;       //小时
    int mm =0;      //分钟
    int ss =0;      //秒

};
#endif // WIDGET_H

源文件:

#include "widget.h"
#include "ui_widget.h"
#include <QDebug>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    //绑定定时器
    connect(&t1,SIGNAL(timeout()),this,SLOT(update()));
    //启动定时器
    t1.start(1000);//一秒
}

Widget::~Widget()
{
    delete ui;
}
void Widget::paintEvent(QPaintEvent *event)
{
    //获取系统时间
    QTime systime = QTime::currentTime();
    QString tm = systime.toString("hhmmss");
    int a=tm.toInt();   //例:200112
    qDebug ()<<a;
    hh=a/10000;            //小时
    mm=a%10000/100;      //分钟
    ss=a%100;            //秒
    //实例化一个对象
    QPainter q1(this);
    //来个笔
    QPen pen;
    pen.setColor("purple");
    pen.setWidth(5);            //设置画笔粗细
    //来个字体
    //准备字体
    QFont font;
    font.setFamily("宋体");            //设置字体族
    font.setPointSize(10);            //设置字体大小
    //把画笔给画家
    q1.setPen(pen);
    q1.setFont(font);
    //画圆
    q1.translate(this->width()/2,this->height()/2);
    q1.drawEllipse(QPoint(0,0),200,200);
    //填色
    q1.setBrush(QBrush(QColor(255,182,193)));
    q1.setPen(Qt::NoPen);//设置是否有边框
    q1.drawEllipse(QPoint(0,0),200,200);
    //画刻度
    pen.setColor("black");
    pen.setWidth(5);//粗刻度
    q1.setPen(pen);
    //旋转30°画一个
    for(int i=0;i<12;i++)
    {
        int num = 0;
        num += 30;
        QString x = QString::number(i+1,10);
        q1.rotate(num);//设置绘制坐标正方向
        q1.drawLine(QPoint(0,-200),QPoint(0,-190));
        q1.drawText(QPoint(0,-170),x);
    }
    pen.setWidth(2);//细刻度
    q1.setPen(pen);
    for(int i=0;i<60;i++)
    {
        int num = 0;
        num += 6;
        q1.rotate(num);//设置绘制坐标正方向
        q1.drawLine(QPoint(0,-200),QPoint(0,-195));
    }

    //画三个指针
    pen.setColor("red");
    pen.setWidth(10);
    q1.setPen(pen);
    q1.rotate(hh*30+mm/2);
    q1.drawLine(QPoint(0,0),QPoint(0,-50));
    q1.rotate(-hh*30+mm/2-30);
    pen.setColor("blue");
    pen.setWidth(5);
    q1.setPen(pen);
    q1.rotate(mm*6);
    q1.drawLine(QPoint(0,0),QPoint(0,-80));
    q1.rotate(-mm*6);
    pen.setColor("green");
    pen.setWidth(3);
    q1.setPen(pen);
    q1.rotate(ss*6);
    q1.drawLine(QPoint(0,0),QPoint(0,-100));
    q1.rotate(-ss*6);

}

2)运行结果

二、思维导图(画不完了先空着)

三、模拟面试题

  1. 指针和引用的区别:1)指针定义时需要使用*,引用定义时需要使用&。2)指针取值需要使用*号运算符完成,引用使用时直接跟目标使用方法一样。3)指针可以不初始化作为一个野指针存在,引用必须初始化。4)指针初始化后还可以修改指向的指,引用一旦指定就不可修改5)有二级指针但没有二级引用。6)有空指针,没有空引用。7)指针不能指向右值,但引用有右值引用.8)指针定义时需要分配8字节的内存空间,引用不需要分配内存空间它使用的是目标的内存空间。9)指针进行偏移运算时是对地址的偏移,引用进行偏移运算时是对目标值的偏移。10)指针有指针数组,引用不可以引用一个数组
  2. C/C++的区别:1、c是完全面向过程编程,c++是半面向过程半面向对象编程。2、C++是对C语言的扩充,C语言的所有语法C++都可以直接使用。
  3. Qt中对哪些控件比较熟悉:QPushButton按钮,QWidget图形化界面类的父类,
  4. Qt中的信号与槽机制:就是一个组件用于发送信号,与之绑定的组件接收到信号后会做出相应的反应。信号:所谓信号就是指信号函数,定义在类signals权限下,是一个不完整的函数只有函数声明没有函数定义,它不能像普通函数一样被调用只能被发射出去。槽:所谓槽就是指槽函数,定义在slots权限下,是一个完整的函数,既有函数声明也有函数定义。可以像普通函数一样被调用,但是普通函数不能当作槽函数接收信号。
  5. 对象树模型:对象树模型是qt中类的存储方式,其中子组件构造时需要指定父组件,子组件的生命周期由父组件进行管理,父组件展示时回一并展示子组件,父组件释放时会一并释放子组件。每一个组件都会有一个父组件指针和一个子组件链表。
  6. 什么情况下需要使用多线程(引入多线程的目的):在一个进程中需要同时执行多个任务时可以使用多线程来完成多个阻塞任务的并发进行,或者在拷贝文件等操作时为了提高效率可以使用多线程。
  7. 使用多线程需要注意什么:需要注意竞态
  8. Epoll和select的区别:1、存储方式上:2、
  9. 对智能指针的理解:智能指针有:独占智能指针、共享智能指针、弱智能指针。智能指针是用来防止由于多个指针指向同一个内存地址导致的指针内存泄漏的,智能不是指针而是模板类。
  10. 共享内存和消息队列的区别:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2126498.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何用Google Trend进行SEO优化?方法与策略

做SEO的都知道&#xff0c;Google Trend是一款免费工具&#xff0c;用户可以查看不同关键词的搜索趋势、兴趣强度和区域分布。通过 Google Trends&#xff0c;你可以获得以下信息&#xff0c;这些数据可以帮助您更好地了解用户需求并优化您的SEO策略&#xff1a; 1、搜索量趋势…

线结构光测量系统标定--导轨

光平面标定原理可查看之前的博文《光平面标定》&#xff0c;光条中心提取可参考线结构光专栏光条中心提取系列的文章&#xff0c;相机标定参考相机标定专栏中的博文。&#xff08;欢迎进Q群交流&#xff1a;874653199&#xff09; 线结构光测量系统(指一个线结构光传感器与一个…

如何检查前端项目中我们没有使用的第三方包

问题描述&#xff1a;我们在赶项目或者在做些功能或者效果的时候往往会用到很多的第三方包&#xff0c;那么时间一长&#xff0c;我们有时候会忘记删除这些包到底该怎么办呢&#xff1f;接下来教给大家一个方法。 在我们的项目根目录下面随便起一个.js的文件 代码如下&#x…

算法工程师重生之第四天(两两交换链表中的节点 删除链表的倒数第N个节点 链表相交 环形链表II 总结 )

参考文献 代码随想录 一、两两交换链表中的节点 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即&#xff0c;只能进行节点交换&#xff09;。 示例 1&#xff1a; 输入&am…

掌握python的dataclass,让你的代码更简洁优雅!

"dataclass"是从"Python3.7"版本开始&#xff0c;作为标准库中的模块被引入。 随着"Python"版本的不断更新&#xff0c;"dataclass"也逐步发展和完善&#xff0c;为"Python"开发者提供了更加便捷的数据类创建和管理方式。 …

Element-UI 组件实现面包屑导航栏

Element-UI 组件实现面包屑导航栏 面包屑导航栏是一种辅助导航系统&#xff0c;它显示用户当前位置在网站或应用层次结构中的位置&#xff0c;可以帮助用户了解他们当前页面的位置&#xff0c;并且可以方便地返回到上级页面或首页。 面包屑导航栏的实现原理&#xff1a; 路径…

【网易低代码】第2课,页面表格查询功能

你好&#xff01; 这是一个新课程 CodeWave网易低代码 通过自然语言交互式智能编程&#xff0c;同时利用机器学 习&#xff0c;帮助低代码开发者进一步降低使用门槛、提高应用开发效率 【网易低代码】第2课&#xff0c;页面表格查询功能 1.拖拽表格组件到页面布局中2.服务端逻辑…

FFCD:森林火灾分类数据集(猫脸码客 第184期)

亲爱的读者们&#xff0c;您是否在寻找某个特定的数据集&#xff0c;用于研究或项目实践&#xff1f;欢迎您在评论区留言&#xff0c;或者通过公众号私信告诉我&#xff0c;您想要的数据集的类型主题。小编会竭尽全力为您寻找&#xff0c;并在找到后第一时间与您分享。 fores…

2024/9/11黑马头条跟学笔记(七)

1)今日内容介绍 搜索结果&#xff0c;搜索记录&#xff0c;搜索联想 搭建环境 索引&#xff0c;存储&#xff0c;分词 多条件复合查询 结果高亮处理 索引数据同步&#xff08;文章发布后创建索引 kafka&#xff09; 搭建mongodb&#xff0c;存储链和性能好过mysql 异步保…

56 - I. 数组中数字出现的次数

comments: true difficulty: 中等 edit_url: https://github.com/doocs/leetcode/edit/main/lcof/%E9%9D%A2%E8%AF%95%E9%A2%9856%20-%20I.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E6%95%B0%E5%AD%97%E5%87%BA%E7%8E%B0%E7%9A%84%E6%AC%A1%E6%95%B0/README.md 面试题 56 - I. 数组中数…

【学习笔记】SSL证书密码套件之加密

本篇将介绍密码套件中加密常用的协议并将他们进行比较&#xff0c;包括&#xff1a;CHACHA20、AES-256-GCM、AES-128-GCM、AES-256-CBC、AES-128-CBC、3DES-CBC、RC4-128、DES-CBC 一、概念 &#xff08;选择以上合适协议&#xff09;对称加密算法 目的是保护批量数据传输流密…

linux从0到1 基础完整知识

1. Linux系统概述 Linux是一种开源操作系统&#xff0c;与Windows或macOS等操作系统不同&#xff0c;Linux允许用户自由地查看、修改和分发其源代码。以下是Linux系统的一些显著的优势。 稳定性和可靠性&#xff1a; 内核以其稳定性而闻名&#xff0c;能够持续运行数月甚至数…

Codeforces Round 971 (Div. 4)——C题题解

本题的大意是一个青蛙从原点开始跳格子(0,0)&#xff0c;最终要跳到点(x,y)去&#xff0c;并且每一步的步长不能超过k&#xff0c;问最短几步可以跳到终点 分析&#xff1a; 本题利用贪心思想&#xff0c;肯定是先跳最大的步长这样总体用的步数最长 代码演示&#xff1a; #inc…

等待唤醒机制和阻塞队列

1. 等待唤醒机制 由于线程的随机调度&#xff0c;可能会出现“线程饿死”的问题&#xff1a;也就是一个线程加锁执行&#xff0c;然后解锁&#xff0c;其他线程抢不到&#xff0c;一直是这个线程在重复操作 void wait() 当前线程等待&#xff0c;直到被其他线程唤醒 void no…

【QT】自制一个简单的时钟(跟随系统时间)

目录 源代码&#xff1a; 输出结果如下&#xff1a; 使用QT完成一个简单的时钟图形化界面&#xff0c;功能是完成了时分秒指针能够跟随系统时间移动 设计思路&#xff1a; 1、首先将时钟的边框绘制出来 2、定义出一个定时器t1&#xff0c;将定时器连接到update_slot槽内&#…

CSS 常用元素属性

CSS 属性有很多, 可以参考文档 CSS 参考手册 1. 字体属性 设置字体 多个字体之间使用逗号分隔. (从左到右查找字体, 如果都找不到, 会使用默认字体. )如果字体名有空格, 使用引号包裹.建议使用常见字体, 否则兼容性不好. <style>.one {font-family:"Microsoft Ya…

Docker数据卷介绍及相关操作

数据卷的介绍 数据卷&#xff08;Data Volumes&#xff09;&#xff1a;是一个虚拟目录&#xff0c;是容器内目录与宿主机目录之间映射的桥梁。 对数据卷的修改会立马生效数据卷可以在容器之间共享和重用对数据卷的更新&#xff0c;不会影响镜像数据卷默认会一直存在&#xf…

Element UI:初步探索 Vue.js 的高效 UI 框架

Element UI&#xff1a;初步探索 Vue.js 的高效 UI 框架 一 . ElementUI 基本使用1.1 Element 介绍1.2 Element 快速入门1.3 基础布局1.4 容器布局1.5 表单组件1.6 表格组件1.6.1 基础表格1.6.2 带斑马纹表格1.6.3 带边框表格1.6.4 带状态的表格 1.7 导航栏组件讲解 二 . 学生列…

动态规划(一)——斐波那契数列模型

文章目录 斐波那契数列模型第N个泰波那契数 补充&#xff1a;空间优化——滚动数组三步问题最小花费爬楼梯解码方法 斐波那契数列模型 回头总结&#xff1a; 斐波那契数列模型一般都是线性dp&#xff0c;对于这类DP题目的状态表示一般是 以i为结尾&#xff0c;… 分析状态转移方…

google vr 入门之VrPanoramaView制作全景图列表(1)

展示图片的列表我这里使用RecycleView&#xff0c;activity_main.xml <?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android“http://schemas.android.com/apk/res/android” xmlns:tools“http://schemas.android.com/tool…