欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 培训 > QT day4

QT day4

2024/10/25 3:21:21 来源:https://blog.csdn.net/qq_55245263/article/details/142144292  浏览:    关键词:QT day4

一、模拟面试

指针与引用的区别
C/C++的区别C是完全面向过程的语言,C++中包含C中的全部功能,并且具有面向对象的特征,属于半面向过程,半面向对象
对QT中哪些控件比较熟悉QWidget,
信号与槽信号与槽机制是Qt的一个重要机制,信号只需要声明,不需要定义,槽函数需要声明和定义,使用connect函数将信号与槽函数连接,
对象树模型
什么情况下使用多线程
使用多线程需要注意什么线程是任务调度的最小单位,多线程共享同一进程的资源时可能会出现竞态,及多个线程同时
select和poll和epoll的区别
描述一下智能指针
TCP的TTL
共享内存和消息队列的区别共享内存是在外部空间映射一块空间,并设置为

二、使用Qt Creator制作简易闹钟

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QPaintEvent>
#include<QDebug>
#include<QPainter>
#include <QTimer>
#include <QTime>
#include <QTimerEvent>
#include <QDateTime>
#include <cmath>
#include <QLabel>
#include <QIcon>
#include <QPalette>
#include <QColor>
#include <QBrush>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();void mouseMoveEvent(QMouseEvent *event) override;void mousePressEvent(QMouseEvent *event) override;private:Ui::Widget *ui;QString SysTime;    //系统时间double hour;       //小时double minute;        //分钟double second;        //秒数double msec;     //毫秒int SysTimeTid = 0;        //系统定时器id号QPixmap *pix;           //映射屏幕QPixmap *pixhour;QPixmap *pixmin;QPixmap *pixsec;void paintEvent(QPaintEvent *event)override;    //绘画事件void timerEvent(QTimerEvent *event) override ;  //时间事件QPoint temp;    //辅助向量坐标点
};
#endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);this->resize(600, 600);//触发刷新时间事件SysTimeTid = this->startTimer(1);this->setWindowIcon(QIcon(":/pictrue/clock.png"));    //窗口图标setWindowFlags(windowFlags() | Qt::FramelessWindowHint);    //关闭上方标题栏}Widget::~Widget()
{delete ui;
}void Widget::paintEvent(QPaintEvent *event)
{QPainter painter(this);painter.setRenderHint(QPainter::Antialiasing, true);    //抗锯齿
//    painter.setBrush(QColor("white"));
//    painter.setPen(Qt::NoPen);
//    painter.drawRoundedRect(rect(), 100, 100); // 设置圆角半径为10像素QPalette palette = this->palette();palette.setColor(QPalette::Background, "#1C1C1D"); // 设置背景颜色this->setAutoFillBackground(true);this->setPalette(palette);//    // 创建一个圆角矩形路径
//    QPainterPath path;
//    path.addRoundedRect(rect(), 100, 100); // 设置圆角半径为10像素//    // 使用路径绘制圆角矩形
//    painter.drawPath(path);//    painter.setRenderHint(QPainter::Antialiasing, true);QPainterPath painterPath;painterPath.addEllipse(100, 100, 400, 400);painter.setClipPath(painterPath);  //添加绘制区域,为圆形绘制QBrush brush("#FFFFFE"); // 填充色painter.setBrush(brush);painter.drawEllipse(100, 100, 400, 400);QTransform transform;transform.translate(300, 300);  //平移坐标原点painter.setTransform(transform);painter.setPen(Qt::black);// painter.drawPoint(250,250);for(int i=1;i<=60;i++){painter.setPen(Qt::red);painter.save();painter.rotate(6*i);if(i%5==0){QPen pen;pen.setColor("#8B8C8B"); // 设置画笔颜色pen.setWidth(10);      // 设置画笔宽度pen.setCapStyle(Qt::RoundCap); // 设置画笔端点为圆形painter.setPen(pen);painter.drawLine(0, -185, 0, -155);    //大刻度//painter.drawText(QPoint(-5, -160), QString::number(i/5));  //数字}else{QPen pen;pen.setColor(Qt::black); // 设置画笔颜色pen.setWidth(1);      // 设置画笔宽度painter.setPen(pen); //小刻度painter.drawLine(0, -185, 0, -175);}painter.restore();}QPen pen;painter.save();pen.setColor(Qt::black); // 设置画笔颜色pen.setWidth(10);      // 设置画笔宽度为pen.setCapStyle(Qt::RoundCap); // 设置画笔端点为圆形painter.setPen(pen);  //时针painter.rotate(30*(hour+minute/60+second/360));  //24小时painter.drawLine(0, 0, 0, -90);painter.restore();painter.save();painter.save();pen.setColor(Qt::black); // 设置画笔颜色pen.setWidth(10);      // 设置画笔宽度pen.setCapStyle(Qt::RoundCap); // 设置画笔端点为圆形painter.setPen(pen);  //分针painter.rotate(6*(minute+second/60));  //60分钟painter.drawLine(0, 0, 0, -185);painter.restore();pen.setColor("#F09A37"); // 设置画笔颜色pen.setWidth(3);      // 设置画笔宽度painter.setPen(pen);   // 应用新的画笔设置pen.setCapStyle(Qt::RoundCap); // 设置画笔端点为圆形painter.rotate(6* (second+(msec/1000) + 1)); // 旋转度数 360度 60秒钟painter.drawLine(0, 20, 0, -185);painter.restore(); // 旋转完成之后还原}void Widget::timerEvent(QTimerEvent *event)
{//判断是否为自己的定时器if(event->timerId() == SysTimeTid){//系统定时器//在ui界面显示日期时间QDateTime currentDateTime = QDateTime::currentDateTime();QTime currentTime = currentDateTime.time();hour = currentTime.hour();    // 获取小时minute = currentTime.minute();   // 获取分钟second = currentTime.second();   // 获取秒数msec = currentTime.msec();      //毫秒//        qDebug()<<hour;//        qDebug()<<minute;//        qDebug()<<second;//        qDebug()<<msec;//刷新界面this->update();}
}void Widget::mouseMoveEvent(QMouseEvent *event)
{this->move(event->globalPos() - temp);
}void Widget::mousePressEvent(QMouseEvent *event)
{//记录点击时鼠标的temp = event->globalPos() - this->pos();
}
#include "widget.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com