农历日历 v1.0.4
载入中...
搜索中...
未找到
类 | Public 类型 | 信号 | Public 成员函数 | 静态 Public 成员函数 | Protected 成员函数 | 属性 | 所有成员列表
CLunarCalendar类 参考

农历日历类 更多...

#include <LunarCalendar.h>

类 CLunarCalendar 继承关系图:

类

class  CTaskHandler
 使用者自定义任务接口 类 更多...
 

Public 类型

enum class  _TOUCH_UP_DOWN_FUNCTION { TouchChangeView , TouchChangeMounth }
 

信号

void sigSelectionChanged ()
 当前选择日期改变时触发 可以在相应的槽函数中调用下列函数
 

Public 成员函数

 CLunarCalendar (QWidget *parent=nullptr)
 
int SetTouchUpDownFunction (_TOUCH_UP_DOWN_FUNCTION f)
 
virtual QSize sizeHint () const override
 
virtual QSize minimumSizeHint () const override
 
下列功能仅由开发者使用。客户和使用者禁止使用。
int LoadCalendarTable (const QString &szFile)
 从缓存文件中得到农历
 
int GenerateCalendarTable (const QString &szFile, int nThreadNumber=2, bool bClearCache=false, bool bSaveAllDate=true)
 产生日历缓存表
 

静态 Public 成员函数

static const QString Version ()
 

Protected 成员函数

bool eventFilter (QObject *watched, QEvent *event) Q_DECL_OVERRIDE
 

属性

QDate selectedDate
 
QString selectLunar
 
int showYear
 
int showMonth
 
QDate minimumDate
 
QDate maximumDate
 

设置界面

enum class  _HEAD_position {
  Not = 0 , Top , Down , Left ,
  Right
}
 
enum class  _CalendarType { CalendarTypeSolar = 0x01 , CalendarTypeLunar = 0x02 }
 日历类型 更多...
 
enum class  _VIEW_TYPE { ViewTypeMonth , ViewTypeWeek }
 视图类型 更多...
 
int SetHeadposition (_HEAD_position pos=_HEAD_position::Top)
 设置日历头的位置
 
int SetCalendarType (_CalendarType type)
 设置日历类型(组合)
 
const _CalendarType GetCalendarType () const
 得到日历类型
 
int SetViewType (_VIEW_TYPE type)
  设置视图类型
 
const _VIEW_TYPE GetViewType () const
 得到视图类型
 
int Update ()
 更新数据和视图
 
void setFont (const QFont &font)
 
void ShowHead (bool bShow)
 显示或隐藏日历头
 
void ShowTools (bool bShow)
 显示或隐藏日期工具按钮
 
void ShowToday (bool bShow)
 显示或隐藏今日工具按钮
 
void ShowDate (bool bShow)
 显示或隐藏选择日期
 
void ShowTime (bool bShow)
 显示或隐藏当前时间
 
void ShowWeekHead (bool bShow)
 显示或隐藏周
 
void ShowWeeks (bool bShow)
 显示或隐藏第几周
 
void ShowGrid (bool show)
 显示或隐藏网格
 
void EnableToolTip (bool show)
 显示或隐藏工具提示
 
void ShowBackgroupImage (bool show)
 显示或隐藏背景图片
 

日期操作

const QDate SelectedDate () const
 得到当前选择的日期。 当前选择的日期在指定的最小日期 MinimumDate() 与最大日期 MaximumDate() 的范围内。 默认为系统当前日期。
 
void SetSelectedDate (const QDate &date, bool bForce=false)
 设置当前选择的日期
 
const QString SelectedLunar () const
 得到当前选择的日期的农历的字符串
 
const QString SelectedSolarTerm () const
 得到当前选的节气
 
int SelectedLunar (int &year, int &month, int &day)
 得到当前选择的日期的农历
 
const QDate MinimumDate () const
 得到日历的支持最小日期
 
void SetMinimumDate (const QDate &date)
 设置日历的支持最小日期
 
const QDate MaximumDate () const
 得到日历的支持最大日期
 
void SetMaximumDate (const QDate &date)
 设置日历的支持最大日期
 
void SetDateRange (const QDate &min, const QDate &max)
 设置日历的支持日期的范围
 
const int GetShowYear () const
 得到当前界面显示的年份
 
const int GetShowMonth () const
 得到当前界面显示的月份
 
const Qt::DayOfWeek FirstDayOfWeek () const
 得到年周从哪天开始
 
static int GetLunar (const QDate date, int &year, int &month, int &day)
 得到给定日期的农历(公历转农历)
 

节日、周年纪念日、任务操作

int SetTaskHandle (QSharedPointer< CTaskHandler > handler)
 设置 使用者自定义任务接口
 
virtual int SetTaskHandle (std::function< uint(const QDate &date, QStringList &tasks)> cbHandler)
 设置 使用者自定义任务接口
 
bool EnableHolidays (bool bEnable=true)
 允许或禁用节日
 
bool EnableSolarTerm (bool bEnable=true)
 允许或禁用节气
 

详细描述

农历日历类

显示阳历、农历、节日、任务

CLunarCalendar 类的使用

在文件 LunarCalendar.h 第 237 行定义.

成员枚举类型说明

◆ _CalendarType

enum class CLunarCalendar::_CalendarType
strong

日历类型

枚举值
CalendarTypeSolar 

阳历

CalendarTypeLunar 

农历

在文件 LunarCalendar.h 第 541 行定义.

◆ _HEAD_position

enum class CLunarCalendar::_HEAD_position
strong
枚举值
Not 

无

Top 

上

Down 

下

Left 

左

Right 

右

在文件 LunarCalendar.h 第 470 行定义.

◆ _TOUCH_UP_DOWN_FUNCTION

enum class CLunarCalendar::_TOUCH_UP_DOWN_FUNCTION
strong

在文件 LunarCalendar.h 第 570 行定义.

◆ _VIEW_TYPE

enum class CLunarCalendar::_VIEW_TYPE
strong

视图类型

枚举值
ViewTypeMonth 

月

ViewTypeWeek 

周

在文件 LunarCalendar.h 第 551 行定义.

构造及析构函数说明

◆ CLunarCalendar()

CLunarCalendar::CLunarCalendar ( QWidget *  parent = nullptr)
explicit

在文件 LunarCalendar.cpp 第 40 行定义.

◆ ~CLunarCalendar()

CLunarCalendar::~CLunarCalendar ( )
overridevirtual

在文件 LunarCalendar.cpp 第 245 行定义.

成员函数说明

◆ EnableHolidays

bool CLunarCalendar::EnableHolidays ( bool  bEnable = true)
slot

允许或禁用节日

参数
bUse
返回

在文件 LunarCalendar.cpp 第 1195 行定义.

◆ EnableSolarTerm

bool CLunarCalendar::EnableSolarTerm ( bool  bEnable = true)
slot

允许或禁用节气

参数
bEnable
返回

在文件 LunarCalendar.cpp 第 1202 行定义.

◆ EnableToolTip

void CLunarCalendar::EnableToolTip ( bool  show)
slot

显示或隐藏工具提示

在文件 LunarCalendar.cpp 第 542 行定义.

◆ eventFilter()

bool CLunarCalendar::eventFilter ( QObject *  watched,
QEvent *  event 
)
protected

在文件 LunarCalendar.cpp 第 994 行定义.

◆ FirstDayOfWeek()

const Qt::DayOfWeek CLunarCalendar::FirstDayOfWeek ( ) const

得到年周从哪天开始

返回

在文件 LunarCalendar.cpp 第 964 行定义.

◆ GenerateCalendarTable()

int CLunarCalendar::GenerateCalendarTable ( const QString &  szFile,
int  nThreadNumber = 2,
bool  bClearCache = false,
bool  bSaveAllDate = true 
)

产生日历缓存表

参数
szFile缓存文件
nThreadNumber产生的线程数
bClearCache是否清除以前的缓存
bSaveAllDate是否保存所有日期
返回
成功返回 0 ;其它失败
注解
仅由开发者使用。客户和使用者禁止使用。
参见
CLunarTable

在文件 LunarCalendar.cpp 第 1305 行定义.

◆ GetCalendarType()

const CLunarCalendar::_CalendarType CLunarCalendar::GetCalendarType ( ) const

得到日历类型

在文件 LunarCalendar.cpp 第 1279 行定义.

◆ GetLunar()

int CLunarCalendar::GetLunar ( const QDate  date,
int &  year,
int &  month,
int &  day 
)
static

得到给定日期的农历(公历转农历)

参数
date日期
year农历年
month农历月
day农历日
返回

在文件 LunarCalendar.cpp 第 691 行定义.

◆ GetShowMonth()

const int CLunarCalendar::GetShowMonth ( ) const

得到当前界面显示的月份

返回
得到显示的月份

在文件 LunarCalendar.cpp 第 707 行定义.

◆ GetShowYear()

const int CLunarCalendar::GetShowYear ( ) const

得到当前界面显示的年份

返回
显示的年份

在文件 LunarCalendar.cpp 第 700 行定义.

◆ GetViewType()

const CLunarCalendar::_VIEW_TYPE CLunarCalendar::GetViewType ( ) const

得到视图类型

在文件 LunarCalendar.cpp 第 1265 行定义.

◆ LoadCalendarTable()

int CLunarCalendar::LoadCalendarTable ( const QString &  szFile)

从缓存文件中得到农历

参数
szFile缓存文件
返回
成功返回 0 ;其它失败
注解
仅由开发者使用。客户和使用者禁止使用。
参见
CLunarTable

在文件 LunarCalendar.cpp 第 1300 行定义.

◆ MaximumDate()

const QDate CLunarCalendar::MaximumDate ( ) const

得到日历的支持最大日期

在文件 LunarCalendar.cpp 第 714 行定义.

◆ MinimumDate()

const QDate CLunarCalendar::MinimumDate ( ) const

得到日历的支持最小日期

在文件 LunarCalendar.cpp 第 751 行定义.

◆ minimumSizeHint()

QSize CLunarCalendar::minimumSizeHint ( ) const
overridevirtual

在文件 LunarCalendar.cpp 第 1366 行定义.

◆ SelectedDate()

const QDate CLunarCalendar::SelectedDate ( ) const

得到当前选择的日期。 当前选择的日期在指定的最小日期 MinimumDate() 与最大日期 MaximumDate() 的范围内。 默认为系统当前日期。

参见
MinimumDate()
MaximumDate()

在文件 LunarCalendar.cpp 第 594 行定义.

◆ SelectedLunar() [1/2]

const QString CLunarCalendar::SelectedLunar ( ) const

得到当前选择的日期的农历的字符串

在文件 LunarCalendar.cpp 第 661 行定义.

◆ SelectedLunar() [2/2]

int CLunarCalendar::SelectedLunar ( int &  year,
int &  month,
int &  day 
)

得到当前选择的日期的农历

参数
year农历年
month农历月
day农历日

在文件 LunarCalendar.cpp 第 679 行定义.

◆ SelectedSolarTerm()

const QString CLunarCalendar::SelectedSolarTerm ( ) const

得到当前选的节气

返回
如果有,则返回节气。否则返回空。

在文件 LunarCalendar.cpp 第 670 行定义.

◆ SetCalendarType()

int CLunarCalendar::SetCalendarType ( _CalendarType  type)

设置日历类型(组合)

在文件 LunarCalendar.cpp 第 1289 行定义.

◆ SetDateRange()

void CLunarCalendar::SetDateRange ( const QDate &  min,
const QDate &  max 
)

设置日历的支持日期的范围

在文件 LunarCalendar.cpp 第 787 行定义.

◆ setFont()

void CLunarCalendar::setFont ( const QFont &  font)

在文件 LunarCalendar.cpp 第 1353 行定义.

◆ SetHeadposition()

int CLunarCalendar::SetHeadposition ( _HEAD_position  pos = _HEAD_position::Top)

设置日历头的位置

参数
pos
返回

在文件 LunarCalendar.cpp 第 274 行定义.

◆ SetMaximumDate()

void CLunarCalendar::SetMaximumDate ( const QDate &  date)

设置日历的支持最大日期

在文件 LunarCalendar.cpp 第 721 行定义.

◆ SetMinimumDate()

void CLunarCalendar::SetMinimumDate ( const QDate &  date)

设置日历的支持最小日期

在文件 LunarCalendar.cpp 第 758 行定义.

◆ SetSelectedDate()

void CLunarCalendar::SetSelectedDate ( const QDate &  date,
bool  bForce = false 
)

设置当前选择的日期

参数
date将选择的日期。
注解
选择的日期必须在指定的最小日期 MinimumDate() 与最大日期 MaximumDate() 的范围内。 如果超过范围。则会自动调整到范围内。
参数
bForce
  • true: 更新模型中的日期
  • false: 当前设置的日期与模型中的日期不相同时,才更新模型中的日期
参见
SetDateRange()
SetMinimumDate() MinimumDate()
SetMaximumDate() MaximumDate()

在文件 LunarCalendar.cpp 第 601 行定义.

◆ SetTaskHandle() [1/2]

int CLunarCalendar::SetTaskHandle ( QSharedPointer< CTaskHandler >  handler)

设置 使用者自定义任务接口

参数
handler任务处理类(CTaskHandler)

使用方法:

  • 声明 CTaskHandler 派生类
    {
    virtual uint onHandle(/*in*/const QDate& d,
    /*out*/QStringList& tasks) override final;
    };
  • 实现接口 CTaskHandler::onHandle
    uint CHandler::onHandle(/*in*/const QDate& d,
    /*out*/QStringList& tasks) {
    // 纪念日(以年为周期)
    if(10 == d.month() && 25 == d.day())
    {
    tasks << "抗美援朝纪念日";
    return 0;
    }
    int lunarYear = 0;
    int lunarMonth = 0;
    int lunarDay = 0;
    CLunarCalendar::GetLunar(d, lunarYear, lunarMonth, lunarDay);
    // 纪念日(以农历年为周期)
    if(8 == lunarMonth && 22 == lunarDay)
    {
    tasks << "结婚纪念日";
    return 0;
    }
    // 以月为周期
    if(21 == d.day())
    {
    // 表示只显示圆点,不显示内容
    return 1;
    }
    // 以周为周期
    if(Qt::Wednesday == d.dayOfWeek())
    {
    // 表示只显示圆点,不显示内容。建议用上面的方式
    tasks << QString();
    return 0;
    }
    // 单个任务
    if(2015 == d.year() && 10 == d.month() && 22 == d.day())
    {
    // 表示只显示圆点,不显示内容
    return 1;
    }
    // 没有任务
    return 0;
    }
  • 定义变量
    QSharedPointer<CHandler> m_Hnadler;
  • 实例化对象
    m_Hnadler = QSharedPointer<CHandler>(new CHandler());
  • 用 SetTaskHandle 设置处理类
    m_pLunarCalendar->SetTaskHandle(m_Hnadler);
参见
使用者自定义任务接口 农历位置显示类型优先级 CTaskHandler CTaskHandler::onHandle

在文件 LunarCalendar.cpp 第 1209 行定义.

◆ SetTaskHandle() [2/2]

virtual int CLunarCalendar::SetTaskHandle ( std::function< uint(const QDate &date, QStringList &tasks)>  cbHandler)
virtual

设置 使用者自定义任务接口

参数
date要处理的日期
tasks任务列表。如果使用者有新任务,并需要在农历位置处显示内容,则加入到此列表中。
注解
  • 加入空字符或"":表示只显示圆点,不显示内容。
  • 不设置此值。只返回任务数。表示只显示圆点,不显示内容。
  • 请遵守 农历位置显示类型优先级 。
返回
未加入到 tasks 的任务数。不包括 tasks 中的任务数。
注解
在 tasks 中增加的新任务,则不计入返回值中, 如果没有其它的未加入 tasks 的任务,则返回 0。 否则返回未加入到 tasks 中的任务数。

例子:

m_pLunarCalendar->SetTaskHandle([](const QDate& d,
QStringList& tasks)->uint {
int lunarYear = 0;
int lunarMonth = 0;
int lunarDay = 0;
CLunarCalendar::GetLunar(d, lunarYear, lunarMonth, lunarDay);
// 节日(以年为周期)
if(d.month() == 10 && d.day() == 26)
{
tasks << "环卫工人节";
return 0;
}
// 农历节日(以农历年为周期)
if(9 == lunarMonth && 9 == lunarDay)
{
tasks << "老人节" << "老年节" << "登高节" << "踏秋";
return 0;
}
// 纪念日(以年为周期)
if(d.day() == 10 && d.month() == 10)
{
// 表示显示圆点,也显示内容
tasks << "辛亥革命纪念日";
return 0;
}
// 生日(纪念日:以农历年为周期)
if(8 == lunarMonth && 23 == lunarDay)
{
tasks << "爸生日";
return 0;
}
// 以月为周期
if(d.day() == 11)
{
// 表示只显示圆点,不显示内容
return 1;
}
// 以周为周期
if(Qt::Monday == d.dayOfWeek())
{
// 表示只显示圆点,不显示内容。建议用上面的方式
tasks << QString();
return 0;
}
// 单个任务
if(d.day() == 12 && d.month() == 10 && d.year() == 2015)
{
// 表示只显示圆点,不显示内容
return 1;
}
// 没有任务
return 0;});
m_pLunarCalendar->Update();
注解
需要 c++ 标准 11
参见

◆ SetTouchUpDownFunction()

int CLunarCalendar::SetTouchUpDownFunction ( _TOUCH_UP_DOWN_FUNCTION  f)

在文件 LunarCalendar.cpp 第 1273 行定义.

◆ SetViewType()

int CLunarCalendar::SetViewType ( _VIEW_TYPE  type)

 设置视图类型

在文件 LunarCalendar.cpp 第 1227 行定义.

◆ ShowBackgroupImage

void CLunarCalendar::ShowBackgroupImage ( bool  show)
slot

显示或隐藏背景图片

在文件 LunarCalendar.cpp 第 526 行定义.

◆ ShowDate

void CLunarCalendar::ShowDate ( bool  bShow)
slot

显示或隐藏选择日期

在文件 LunarCalendar.cpp 第 588 行定义.

◆ ShowGrid

void CLunarCalendar::ShowGrid ( bool  show)
slot

显示或隐藏网格

在文件 LunarCalendar.cpp 第 516 行定义.

◆ ShowHead

void CLunarCalendar::ShowHead ( bool  bShow)
slot

显示或隐藏日历头

在文件 LunarCalendar.cpp 第 569 行定义.

◆ ShowTime

void CLunarCalendar::ShowTime ( bool  bShow)
slot

显示或隐藏当前时间

在文件 LunarCalendar.cpp 第 1323 行定义.

◆ ShowToday

void CLunarCalendar::ShowToday ( bool  bShow)
slot

显示或隐藏今日工具按钮

在文件 LunarCalendar.cpp 第 549 行定义.

◆ ShowTools

void CLunarCalendar::ShowTools ( bool  bShow)
slot

显示或隐藏日期工具按钮

在文件 LunarCalendar.cpp 第 576 行定义.

◆ ShowWeekHead

void CLunarCalendar::ShowWeekHead ( bool  bShow)
slot

显示或隐藏周

在文件 LunarCalendar.cpp 第 563 行定义.

◆ ShowWeeks

void CLunarCalendar::ShowWeeks ( bool  bShow)
slot

显示或隐藏第几周

在文件 LunarCalendar.cpp 第 557 行定义.

◆ sigSelectionChanged

void CLunarCalendar::sigSelectionChanged ( )
signal

当前选择日期改变时触发 可以在相应的槽函数中调用下列函数

◆ sizeHint()

QSize CLunarCalendar::sizeHint ( ) const
overridevirtual

在文件 LunarCalendar.cpp 第 1361 行定义.

◆ Update()

int CLunarCalendar::Update ( )

更新数据和视图

返回

在文件 LunarCalendar.cpp 第 1346 行定义.

◆ Version()

const QString CLunarCalendar::Version ( )
static

在文件 LunarCalendar.cpp 第 1494 行定义.

属性说明

◆ maximumDate

QDate CLunarCalendar::maximumDate
readwrite

在文件 LunarCalendar.h 第 246 行定义.

◆ minimumDate

QDate CLunarCalendar::minimumDate
readwrite

在文件 LunarCalendar.h 第 245 行定义.

◆ selectedDate

QDate CLunarCalendar::selectedDate
readwrite

在文件 LunarCalendar.h 第 240 行定义.

◆ selectLunar

QString CLunarCalendar::selectLunar
read

在文件 LunarCalendar.h 第 241 行定义.

◆ showMonth

int CLunarCalendar::showMonth
read

在文件 LunarCalendar.h 第 243 行定义.

◆ showYear

int CLunarCalendar::showYear
read

在文件 LunarCalendar.h 第 242 行定义.


该类的文档由以下文件生成: