农历日历 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.h237 行定义.

成员枚举类型说明

◆ _CalendarType

enum class CLunarCalendar::_CalendarType
strong

日历类型

枚举值
CalendarTypeSolar 

阳历

CalendarTypeLunar 

农历

在文件 LunarCalendar.h541 行定义.

◆ _HEAD_position

enum class CLunarCalendar::_HEAD_position
strong
枚举值
Not 

Top 

Down 

Left 

Right 

在文件 LunarCalendar.h470 行定义.

◆ _TOUCH_UP_DOWN_FUNCTION

enum class CLunarCalendar::_TOUCH_UP_DOWN_FUNCTION
strong

在文件 LunarCalendar.h570 行定义.

◆ _VIEW_TYPE

enum class CLunarCalendar::_VIEW_TYPE
strong

视图类型

枚举值
ViewTypeMonth 

ViewTypeWeek 

在文件 LunarCalendar.h551 行定义.

构造及析构函数说明

◆ CLunarCalendar()

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

在文件 LunarCalendar.cpp40 行定义.

◆ ~CLunarCalendar()

CLunarCalendar::~CLunarCalendar ( )
overridevirtual

在文件 LunarCalendar.cpp245 行定义.

成员函数说明

◆ EnableHolidays

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

允许或禁用节日

参数
bUse
返回

在文件 LunarCalendar.cpp1195 行定义.

◆ EnableSolarTerm

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

允许或禁用节气

参数
bEnable
返回

在文件 LunarCalendar.cpp1202 行定义.

◆ EnableToolTip

void CLunarCalendar::EnableToolTip ( bool  show)
slot

显示或隐藏工具提示

在文件 LunarCalendar.cpp542 行定义.

◆ eventFilter()

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

在文件 LunarCalendar.cpp994 行定义.

◆ FirstDayOfWeek()

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

得到年周从哪天开始

返回

在文件 LunarCalendar.cpp964 行定义.

◆ GenerateCalendarTable()

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

产生日历缓存表

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

在文件 LunarCalendar.cpp1305 行定义.

◆ GetCalendarType()

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

得到日历类型

在文件 LunarCalendar.cpp1279 行定义.

◆ GetLunar()

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

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

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

在文件 LunarCalendar.cpp691 行定义.

◆ GetShowMonth()

const int CLunarCalendar::GetShowMonth ( ) const

得到当前界面显示的月份

返回
得到显示的月份

在文件 LunarCalendar.cpp707 行定义.

◆ GetShowYear()

const int CLunarCalendar::GetShowYear ( ) const

得到当前界面显示的年份

返回
显示的年份

在文件 LunarCalendar.cpp700 行定义.

◆ GetViewType()

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

得到视图类型

在文件 LunarCalendar.cpp1265 行定义.

◆ LoadCalendarTable()

int CLunarCalendar::LoadCalendarTable ( const QString &  szFile)

从缓存文件中得到农历

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

在文件 LunarCalendar.cpp1300 行定义.

◆ MaximumDate()

const QDate CLunarCalendar::MaximumDate ( ) const

得到日历的支持最大日期

在文件 LunarCalendar.cpp714 行定义.

◆ MinimumDate()

const QDate CLunarCalendar::MinimumDate ( ) const

得到日历的支持最小日期

在文件 LunarCalendar.cpp751 行定义.

◆ minimumSizeHint()

QSize CLunarCalendar::minimumSizeHint ( ) const
overridevirtual

在文件 LunarCalendar.cpp1366 行定义.

◆ SelectedDate()

const QDate CLunarCalendar::SelectedDate ( ) const

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

参见
MinimumDate()
MaximumDate()

在文件 LunarCalendar.cpp594 行定义.

◆ SelectedLunar() [1/2]

const QString CLunarCalendar::SelectedLunar ( ) const

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

在文件 LunarCalendar.cpp661 行定义.

◆ SelectedLunar() [2/2]

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

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

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

在文件 LunarCalendar.cpp679 行定义.

◆ SelectedSolarTerm()

const QString CLunarCalendar::SelectedSolarTerm ( ) const

得到当前选的节气

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

在文件 LunarCalendar.cpp670 行定义.

◆ SetCalendarType()

int CLunarCalendar::SetCalendarType ( _CalendarType  type)

设置日历类型(组合)

在文件 LunarCalendar.cpp1289 行定义.

◆ SetDateRange()

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

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

在文件 LunarCalendar.cpp787 行定义.

◆ setFont()

void CLunarCalendar::setFont ( const QFont &  font)

在文件 LunarCalendar.cpp1353 行定义.

◆ SetHeadposition()

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

设置日历头的位置

参数
pos
返回

在文件 LunarCalendar.cpp274 行定义.

◆ SetMaximumDate()

void CLunarCalendar::SetMaximumDate ( const QDate &  date)

设置日历的支持最大日期

在文件 LunarCalendar.cpp721 行定义.

◆ SetMinimumDate()

void CLunarCalendar::SetMinimumDate ( const QDate &  date)

设置日历的支持最小日期

在文件 LunarCalendar.cpp758 行定义.

◆ SetSelectedDate()

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

设置当前选择的日期

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

在文件 LunarCalendar.cpp601 行定义.

◆ 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.cpp1209 行定义.

◆ 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.cpp1273 行定义.

◆ SetViewType()

int CLunarCalendar::SetViewType ( _VIEW_TYPE  type)

 设置视图类型

在文件 LunarCalendar.cpp1227 行定义.

◆ ShowBackgroupImage

void CLunarCalendar::ShowBackgroupImage ( bool  show)
slot

显示或隐藏背景图片

在文件 LunarCalendar.cpp526 行定义.

◆ ShowDate

void CLunarCalendar::ShowDate ( bool  bShow)
slot

显示或隐藏选择日期

在文件 LunarCalendar.cpp588 行定义.

◆ ShowGrid

void CLunarCalendar::ShowGrid ( bool  show)
slot

显示或隐藏网格

在文件 LunarCalendar.cpp516 行定义.

◆ ShowHead

void CLunarCalendar::ShowHead ( bool  bShow)
slot

显示或隐藏日历头

在文件 LunarCalendar.cpp569 行定义.

◆ ShowTime

void CLunarCalendar::ShowTime ( bool  bShow)
slot

显示或隐藏当前时间

在文件 LunarCalendar.cpp1323 行定义.

◆ ShowToday

void CLunarCalendar::ShowToday ( bool  bShow)
slot

显示或隐藏今日工具按钮

在文件 LunarCalendar.cpp549 行定义.

◆ ShowTools

void CLunarCalendar::ShowTools ( bool  bShow)
slot

显示或隐藏日期工具按钮

在文件 LunarCalendar.cpp576 行定义.

◆ ShowWeekHead

void CLunarCalendar::ShowWeekHead ( bool  bShow)
slot

显示或隐藏周

在文件 LunarCalendar.cpp563 行定义.

◆ ShowWeeks

void CLunarCalendar::ShowWeeks ( bool  bShow)
slot

显示或隐藏第几周

在文件 LunarCalendar.cpp557 行定义.

◆ sigSelectionChanged

void CLunarCalendar::sigSelectionChanged ( )
signal

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

◆ sizeHint()

QSize CLunarCalendar::sizeHint ( ) const
overridevirtual

在文件 LunarCalendar.cpp1361 行定义.

◆ Update()

int CLunarCalendar::Update ( )

更新数据和视图

返回

在文件 LunarCalendar.cpp1346 行定义.

◆ Version()

const QString CLunarCalendar::Version ( )
static

在文件 LunarCalendar.cpp1494 行定义.

属性说明

◆ maximumDate

QDate CLunarCalendar::maximumDate
readwrite

在文件 LunarCalendar.h246 行定义.

◆ minimumDate

QDate CLunarCalendar::minimumDate
readwrite

在文件 LunarCalendar.h245 行定义.

◆ selectedDate

QDate CLunarCalendar::selectedDate
readwrite

在文件 LunarCalendar.h240 行定义.

◆ selectLunar

QString CLunarCalendar::selectLunar
read

在文件 LunarCalendar.h241 行定义.

◆ showMonth

int CLunarCalendar::showMonth
read

在文件 LunarCalendar.h243 行定义.

◆ showYear

int CLunarCalendar::showYear
read

在文件 LunarCalendar.h242 行定义.


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