• 大小: 12KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-22
  • 语言: 其他
  • 标签: qt日历  

资源简介

利用QLabel和日历算法:蔡勒(Zeller)公式自己写了一个可以选中多个日期的日历控件

资源截图

代码片段和文件信息

#include “calendarex.h“
#include “ui_calendarex.h“
#include 
#include 

CalendarEx::CalendarEx(QWidget *parent) :
    QWidget(parent)
    ui(new Ui::CalendarEx)
{
    ui->setupUi(this);
    // 将控件指针放入list中
    putDayExInList();
    initCalendarProperty();// 初始化每个日期都没有被选中,index为响应的index
    setCurYearMonth(1 1 1);
    connectMouseClickSlot();// 给每一天连接槽函数  

    QFile styleFile(“:/img/style.qss“);
    styleFile.open(QIODevice::ReadOnly);
    QString strstyle(styleFile.readAll());;
    setstyleSheet(strstyle);
}

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


void CalendarEx::putDayExInList()
{
    QList ds = this->findChildren();
    int length = ds.length();
    for(int i = 0; i < length; i ++)
    {
        listDayEx.append(ds[i]);
    }
}


void CalendarEx::initCalendarProperty()
{
    int nCnt = listDayEx.length();
    for(int i = 0; i < nCnt; i ++)
    {
        listDayEx[i]->setSelected(false);
        listDayEx[i]->setIndex(i);
    }
}

void CalendarEx::setCurrentDateTime(int nYear int nMonth int nDay)
{
    setCurYearMonth(nYear nMonth nDay);
    initCalendarProperty();
    QDate d;
    QDate dCurMonthFirstDay(nYear nMonth 1);
    // 计算这个月一号是星期几以及这个月有多少天
    int nDayOfWeek = dg.getDayOfWeek(nYear nMonth 1);
    int nDaysOfMonth = dg.getDaysOfMonth(nYear nMonth);
    if(nDayOfWeek == 0)
        nDayOfWeek = 7;
    // 恢复颜色
     int nCnt = listDayEx.length();
    for(int i = 0; i < nCnt; i ++)
    {
        listDayEx[i]->setSelected(false);
    }
    // 填充当前月一号之前的日期控件
    for(int i = 0; i < nDayOfWeek; i ++)
    {
        QDate dTemp = dCurMonthFirstDay.addDays(-1*(nDayOfWeek - i));
        listDayEx[i]->setDay(dTemp.day());
        listDayEx[i]->setMonType(-1);
        listDayEx[i]->setSelected(false);
        listDayEx[i]->setHint(QString(“上个月“));
    }
    // 填充这个月的
    for(int i = 0; i < nDaysOfMonth; i ++)
    {
        listDayEx[i+nDayOfWeek]->setDay(i+1);
        listDayEx[i+nDayOfWeek]->setMonType(0);
        listDayEx[i+nDayOfWeek]->setSelected(false);
        listDayEx[i+nDayOfWeek]->setHint(QString(“未选择“));
    }
    // 填充下个月的日期控件   
    QDate dNextMonthFirstDay = dCurMonthFirstDay.addMonths(1);
    for(int i = nDayOfWeek + nDaysOfMonth; i < nCnt; i ++)
    {
        listDayEx[i]->setDay(i-nDayOfWeek - nDaysOfMonth + 1);
        listDayEx[i]->setMonType(1);
        listDayEx[i]->setSelected(false);
        listDayEx[i]->setHint(QString(“下个月“));
    }

    // 设置上方的标题
    setYearMonthLabelHint();
    // 设置左边
    setCalendarHint();
    updateCtrlstyle();
}

void CalendarEx::setLabText(QLabel *pLabel const QString &strText)
{
    pLabel->setText(strText);
}

void CalendarEx::setYearMonthLabelHint()
{
    setLabText(ui->lab_YearMonthHint QString(“%1 年 %2 月“).arg(nCurYear).arg(nCurMonth));
}

void CalendarEx::setCurYearMonth(int nYear int nMonth int nDay)
{
    nCurMonth = nMonth;

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2016-12-15 15:26  CalendarExTest\
     文件        6430  2016-12-15 15:25  CalendarExTest\calendarex.cpp
     文件        1424  2016-12-15 15:18  CalendarExTest\calendarex.h
     文件       15618  2016-12-13 14:54  CalendarExTest\calendarex.ui
     文件         553  2016-12-15 14:03  CalendarExTest\CalendarExTest.pro
     文件       23608  2016-12-15 15:26  CalendarExTest\CalendarExTest.pro.user
     文件         919  2016-12-13 11:08  CalendarExTest\datealg.cpp
     文件         225  2016-12-13 11:00  CalendarExTest\datealg.h
     文件        1494  2016-12-15 14:19  CalendarExTest\dayex.cpp
     文件        1058  2016-12-15 15:11  CalendarExTest\dayex.h
     文件        1422  2016-12-13 11:33  CalendarExTest\dayex.ui
     文件         311  2016-12-15 15:22  CalendarExTest\dialog.cpp
     文件         273  2016-12-13 10:41  CalendarExTest\dialog.h
     文件         869  2016-12-13 14:27  CalendarExTest\dialog.ui
     目录           0  2016-12-15 15:26  CalendarExTest\img\
     文件          97  2016-12-15 14:04  CalendarExTest\img.qrc
     文件         612  2016-12-15 15:02  CalendarExTest\img\style.qss
     文件         365  2016-12-14 16:06  CalendarExTest\main.cpp

评论

共有 条评论

相关资源