QT-Demo-Colck-01


QT += widgets
QT += core HEADERS += \
mainwindow.h SOURCES += \
mainwindow.cpp \
main.cpp
#ifndef MAINWINDOW_H
#define MAINWINDOW_H #include <QWidget> class Clock : public QWidget
{
Q_OBJECT //每个从QT继承的类都添加这个宏定义
public:
Clock(QWidget* parent = );//默认父对象为0,也就是当前窗口为顶级窗口
protected:
void paintEvent(QPaintEvent* e) Q_DECL_OVERRIDE;//只要是覆盖就推荐使用该宏定义
}; #endif // MAINWINDOW_H
#include "mainwindow.h"
#include <QTimer>
#include <QPoint>
#include <QColor>
#include <QTime>
#include <QPainter> //默认参数只在申明时写,定义时不写,将默认参数传递给基类QWidget
Clock::Clock(QWidget *parent):QWidget(parent)
{
QTimer* timer = new QTimer(this);//定时器 //每隔一定时间刷新界面
connect(timer,SIGNAL(timeout()),this,SLOT(update())); timer->start(); setWindowTitle(tr("小小时钟")); resize(,);
} //没有使用到形参,那么定义的时候就不需要指明形参名字
void Clock::paintEvent(QPaintEvent *)
{
//三点围成一个时针
const QPoint hourPoint[]=
{
QPoint(,),
QPoint(-,),
QPoint(,-)
};
//三点围成一个分针
const QPoint minPoint[]=
{
QPoint(,),
QPoint(-,),
QPoint(,-)
};
//三点围成一个秒针
const QPoint secPoint[]=
{
QPoint(,),
QPoint(-,),
QPoint(,-)
};
//分别定义时分秒针的颜色和透明度
QColor hourColor(,,);
QColor minColor(,,,);
QColor secColor(,,); //获取窗体的宽和高的函数首字母是小写
int side = qMin(width(),height()); //获取当前时间
QTime time = QTime::currentTime(); //创建画家
QPainter painter(this); //抗锯齿
painter.setRenderHint(QPainter::Antialiasing); //将坐标移动到客户区中间
painter.translate(width()/,height()/); //设置刻度单位为较短的一边的长度的200分之1
//一定要记得加小数点,否则内面小于200时,就会单位刻度为0
painter.scale(side/200.0,side/200.0); //设置画笔和画刷
painter.setPen(Qt::NoPen);
painter.setBrush(hourColor); //保存画家,和restore()成对使用,保存还没有旋转的画家
painter.save();
//旋转坐标轴
painter.rotate( *(time.hour()+time.minute()/60.0) ); //画多边形
painter.drawConvexPolygon(hourPoint,); //还原画家,和save()成对使用,还原到还没有旋转的画家
painter.restore(); //设置画笔,用来画小时刻度
painter.setPen(hourColor); //旋转12次画小时刻度
for(int i=;i<;i++)
{
painter.drawLine(,,,);
painter.rotate();
} //设置分钟,画刷,画笔
painter.setPen(Qt::NoPen);
painter.setBrush(minColor); //保存旋转之前的画家
painter.save(); //通过旋转坐标轴画分针
painter.rotate(*(time.minute()+time.second()/60.0));
painter.drawConvexPolygon(minPoint,); //还原画家到未旋转的状态
painter.restore(); //设置画笔颜色,用来画分钟刻度
painter.setPen(minColor); //通过旋转60次画分钟刻度
for(int i=;i<;i++)
{
if(i%!=)
painter.drawLine(,,,);
painter.rotate();
} //设置画笔画刷,用来画秒针
painter.setPen(Qt::NoPen);
painter.setBrush(secColor); //保存未旋转的画家
painter.save(); //旋转坐标轴用来画秒针
painter.rotate(*time.second());
painter.drawConvexPolygon(secPoint,); //还原画家到未旋转的状态
painter.restore();
}
#include <QApplication>
#include "mainwindow.h" int main(int argc , char* argv[])
{
QApplication app(argc ,argv); Clock clock ;
clock.show(); return app.exec(); }
QT-Demo-Colck-01的更多相关文章
- 虹软人脸识别——官方 Qt Demo 移植到 Linux
一.前言 最近需要在 Linux 平台下开发一个人脸识别相关的应用,用到了虹软的人脸识别 SDK.之前在 Windows 平台用过,感觉不错,SDK 里面还带了 Demo 可以快速看到效果.打开 Li ...
- Qt Demo Http 解析网址 Openssl
今天练习了一下Qt 解析http协议,在Demo中使用到了Openssl 一上午的时间都是编译openssl,不过还是没有成功,很遗憾,这里整理了有关这个Demo的本件 网盘连接:见下方评论吧,长传太 ...
- 读Qt Demo——Basic Layouts Example
此例程主要展示用代码方式创建控件并用Layout管理类对其进行布局: 例程来自Qt5.2,如过是默认安装,代码位于:C:\Qt\Qt5.2.0\5.2.0\mingw48_32\examples\wi ...
- [QT][DEMO] QTableWidget 设置某一列禁止编辑
例程 : 又是好风景 : http://blog.csdn.net/qiao_yihan/article/details/46413345 关键点: 1.QTableWidgetItem 的 setF ...
- Python 2.7.9 Demo - 019.01.CRUD oracle by cx_Oracle
select #coding=utf-8 #!/usr/bin/python import cx_Oracle; conn = None; cursor = None; try: conn = cx_ ...
- Python 2.7.9 Demo - 003.01.只允许相同缩进
Right #!/usr/bin/python if True: print ("True"); print('Again'); else: print ("False& ...
- Oracle PLSQL Demo - 29.01.Function结构模板 [无入参] [有返回]
CREATE OR REPLACE FUNCTION function_name RETURN DATE AS v_date DATE; BEGIN ; dbms_output.put_line(v_ ...
- Oracle PLSQL Demo - 18.01管道function[查询零散的字段组成list管道返回]
--PACKAGE CREATE OR REPLACE PACKAGE test_141213 is TYPE type_ref IS record( ENAME ), WORK_CITY ), SA ...
- QT+OpenGL(01)--实现三角形渲染
1.openglwidget.ui <ui version="4.0"> <author/> <comment/> <exportmacr ...
- [Part 4] 在Windows 10上源码编译PCL 1.8.1支持VTK和QT,可视化三维点云
本文首发于个人博客https://kezunlin.me/post/2d809f92/,欢迎阅读! Part-4: Compile pcl with vtk qt5 support from sour ...
随机推荐
- 我是一个云Hosts文件,用来干啥你懂的
Smarthosts是一个托管在谷歌代码上的项目,您可以轻松利用本项目使用到一份稳定的Hosts文件. 这份Hosts文件可以帮助您顺利打开一些网站,提高某些国外服务的打开或下载速度. http:// ...
- php获取汉字首字母
php获取汉字首字母,可以用于按字母对数据进行检索排序等. 分享下网上找的代码.亲测有效. function getFirstCharter($str){ if(empty($str)){return ...
- 函数式编程做用户登陆注册练习-pycharm上
def login(username,password): """ 用户登陆 :param username: 用户名 :param password:密码 :retur ...
- WebStorm 使用快捷键大全
1. ctrl + shift + n: 打开工程中的文件,目的是打开当前工程下任意目录的文件. 2. ctrl + j: 输出模板 3. ctrl + b: 跳到变量申明处 4. ctrl + al ...
- 磁盘IO单线程顺序写时最快的,如果多线程写,磁盘的磁头要不断重新寻址,所以写入速度反而会慢
(1) 读写最好还是不要多线程,硬盘读写的速度有限,单线程时已经满负荷了,多线程又会增加线程之间的切换,会增加时间. 如果想增加读写速度,应该增加硬盘,做raid (2)首先是硬盘的写入是串行的,CP ...
- 可以供MFC调用的,QT实现的DLL(使用qt-solutions的qtwinmigrate实现)
MFC和QT的消息循环机制不同,所以,要让QT写的DLL可以供MFC调用,要做一点特殊的处理 #include <qmfcapp.h> #include <qwinwidget.h& ...
- 8.2.1.7 Use of Index Extensions 使用索引扩展
8.2.1.7 Use of Index Extensions 使用索引扩展 InnoDB 自动扩展每个secondary index 通过添加primary key columns to it,考虑 ...
- [LeetCode] 179. Largest Number 解题思路
Given a list of non negative integers, arrange them such that they form the largest number. For exam ...
- linux部署mongodb及基本操作
原文:http://blog.csdn.net/jinzhencs/article/details/50930877 一.安装部署mongo 1.创建文件夹 /opt/mongodb/single / ...
- 【C#基础】byte二进制数组转string
//解析post请求数组返回的数组 //解码返回的二进制数组 public string DecodeBytes(byte[] c) { string html = string.Empty; try ...