• 大小: 1.13MB
    文件类型: .rar
    金币: 2
    下载: 0 次
    发布日期: 2024-01-28
  • 语言: 其他
  • 标签: QT  阴历  

资源简介

该代码QT4以上测试OK,能正确显示中文,功能能显示阴历,生宵,天干地支,另外加入了钟表可作参考,可以标记日期,可以设置日期样式, 点击设置图标进入详细设置,该代码可用于日历控件的深入开发

资源截图

代码片段和文件信息

#include “clock.h“
#include 
#include 
#include 
#include 
#include 

Clock::Clock(QWidget *parent) :
    QDialog(parent)
{
    QTimer *timer = new QTimer(this);   //声明一个定时器
    //update()会自动产生重绘消息,调用paintEvent()
    connect(timer SIGNAL(timeout()) this SLOT(update()));  //连接信号槽,定时器超时触发窗体更新
    timer->start(1000);   //启动定时器
    setWindowtitle(tr(“My Clock“));  //设置窗体名称
    setWindowIcon(QIcon(“:/images/clock.ico“));
    resize(300 300);  //设置窗体大小
}

void Clock::paintEvent(QPaintEvent *event)
{
    //下面三个数组用来定义表针的三个顶点,以便后面的填充
    static const QPoint hourHand[3] = {
        QPoint(3 8)
        QPoint(-3 8)
        QPoint(0 -40)
    };
    static const QPoint minuteHand[3] = {
        QPoint(3 8)
        QPoint(-3 8)
        QPoint(0 -70)
    };
    static const QPoint secondHand[3] = {
        QPoint(3 8)
        QPoint(-3 8)
        QPoint(0 -90)
    };//秒针
    //填充表针的颜色
    QColor hourColor(127 0 127);  //分针颜色(第四个表示不透明度)
    QColor minuteColor(0 127 127 191);
    QColor secondColor(127 127 0 127);

    int side = qMin(width() height());  //绘制的范围(宽、高中最小值)
    QTime time = QTime::currentTime();   //获取当前的时间
    QPainter painter(this);              //声明用来绘图用的painter

    //painter.setWindow(-100 -100 200 200);

    painter.setRenderHint(QPainter::Antialiasing);//绘制的图像反锯齿
    painter.translate(width() / 2 height() / 2);//重新定位坐标起始点,把坐标原点放到窗体的中央
    painter.scale(side / 300.0 side / 300.0);//设定画布的边界用窗体宽高的最小值来计算时钟的大小,防止窗体拉伸导致的时钟变形以及显示不全

    painter.setPen(Qt::red);   //填充时针,不需要边线所以NoPen
    QString timeStr= QTime::currentTime().toString();
    painter.drawText(-40308030Qt::AlignHCenter | Qt::AlignTop timeStr);

    painter.setPen(Qt::NoPen);   //填充时针,不需要边线所以NoPen
    painter.setBrush(hourColor);  //画刷颜色设定
    painter.save();  //保存painter的状态,保存的是当前的坐标状态,如果不保存,画完之后坐标以改变不方便画下一个
    painter.rotate(30.0 * ((time.hour() + time.minute() / 60.0))); //将painter(的”视角“)根据时间参数转移(30° * (小时 + 分钟 / 60))
    painter.drawConvexPolygon(hourHand 3);  //填充时针的区域
    painter.restore();

    painter.setPen(hourColor);    //下面画表示小时的刻度,此时要用到画笔(因为要划线)
    for (int i = 0; i < 12; ++i) {
        painter.drawLine(0 -88 0 -96);
        if (i == 0)  painter.drawText(-10-882020Qt::AlignHCenter | Qt::AlignTopQString::number(12));
        else  painter.drawText(-10-882020Qt::AlignHCenter | Qt::AlignTopQString::number(i));
        painter.rotate(30.0);
    }
    //后面的跟前面的类似,分别绘制了分针和秒针,及相应的刻度
    painter.setPen(Qt::NoPen);
    painter.setBrush(minuteColor);
    painter.save();
    painter.rotate(6.0 * (time.minute() + time.second() / 60.0));  //设旋转(角度 = 6° * (分钟 + 秒 / 60))
    painter.drawConvexPolygon(minuteHand 3);  //填充分针部分
    painter.restore();

    painter.setPen(minuteColor);
    for (int j = 0; j < 60; ++j) {  //循环60次,绘制表盘(其实可以从1开始,到59,提高一点效率)
        if ((j % 5) != 0)
            painter.drawLine(0 -92 0 -96);  //不是正点刻度,绘制长4个像素的直线
        painter.rotate(6.0);   //循环60次,每次旋转6度,所以不用save

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       4033  2014-06-11 10:15  calendarwidget\calendar.qm

     文件      13288  2014-06-11 10:15  calendarwidget\calendar.ts

     文件    1528372  2014-06-13 15:33  calendarwidget\calendarwidget

     文件        506  2014-06-10 14:55  calendarwidget\calendarwidget.pro

     文件      13130  2015-08-24 10:05  calendarwidget\calendarwidget.pro.user

     文件      13541  2014-06-20 17:26  calendarwidget\calendarwidget.pro.user.6346352.15

     文件       4287  2014-06-10 10:44  calendarwidget\clock.cpp

     文件        265  2014-06-10 10:45  calendarwidget\clock.h

     文件     466920  2014-06-10 10:45  calendarwidget\clock.o

     文件        410  2014-06-10 08:57  calendarwidget\displaybutton.cpp

     文件        298  2014-06-09 21:31  calendarwidget\displaybutton.h

     文件     193808  2014-06-10 08:57  calendarwidget\displaybutton.o

     文件       1170  2014-04-23 09:33  calendarwidget\images\about.png

     文件       9662  2010-11-14 11:59  calendarwidget\images\clock.ico

     文件       1424  2014-04-23 09:33  calendarwidget\images\configure.png

     文件      12783  2014-06-09 17:04  calendarwidget\images\go_back_today.png

     文件       9662  2010-11-14 11:58  calendarwidget\images\icon.ico

     文件       2362  2015-08-24 10:07  calendarwidget\main.cpp

     文件     413800  2014-06-13 15:00  calendarwidget\main.o

     文件       9310  2014-06-10 15:50  calendarwidget\Makefile

     文件       1978  2014-06-10 10:45  calendarwidget\moc_clock.cpp

     文件     197968  2014-06-10 10:45  calendarwidget\moc_clock.o

     文件       2109  2014-06-09 21:45  calendarwidget\moc_displaybutton.cpp

     文件     200592  2014-06-09 21:45  calendarwidget\moc_displaybutton.o

     文件       2727  2014-06-10 15:56  calendarwidget\moc_setbirthday.cpp

     文件     313696  2014-06-10 15:56  calendarwidget\moc_setbirthday.o

     文件       4669  2014-06-13 15:00  calendarwidget\moc_window.cpp

     文件     223040  2014-06-13 15:00  calendarwidget\moc_window.o

     文件     195576  2014-06-11 10:15  calendarwidget\qrc_resource.cpp

     文件      47952  2014-06-11 10:15  calendarwidget\qrc_resource.o

............此处省略12个文件信息

评论

共有 条评论