Qt模块化笔记之Qt Widgets——日历类

日历类QCalendarWidget 主要用于选择一个日期。直接继承自QWidget,外观如下:

Qt模块化笔记之Qt Widgets——日历类_第1张图片

属性值字面解释如下:

Properties

  • dateEditAcceptDelay : int
  • dateEditEnabled : bool 设置是否可编辑
  • firstDayOfWeek : Qt::DayOfWeek 一个星期默认的第一天,上面即西方的“周日”,第一列
  • gridVisible : bool 网格,默认不可见
  • horizontalHeaderFormat : HorizontalHeaderFormat 水平头格式
  • maximumDate : QDate
  • minimumDate : QDate
  • navigationBarVisible : bool 导航条可视
  • selectedDate : QDate 用这个取得选定的日期
  • selectionMode : SelectionMode 选择模式
  • verticalHeaderFormat : VerticalHeaderFormat 竖直头格式

Qt模块化笔记之Qt Widgets——日历类_第2张图片

公有函数详细解释始下:

QCalendarWidget(QWidget * parent = 0)
	~QCalendarWidget()

void	setDateEditAcceptDelay(int delay)//未知功能,求教
void	setDateEditEnabled(bool enable)//未知,求教
void	setDateTextFormat(const QDate & date, const QTextCharFormat & format)//设置单个日期小格子的显示样式
void	setFirstDayOfWeek(Qt::DayOfWeek dayOfWeek)//重新设置一星期的第一天,默认星期天,参数枚举值见下方1
void	setHeaderTextFormat(const QTextCharFormat & format)//同时设置水平头与竖直头的格式,与下面两个不同,此函数参数是一个类。具体部位见上图各部分说明
void	setHorizontalHeaderFormat(HorizontalHeaderFormat format)//设置水平头的样式,参数是枚举值,参数见3
void	setVerticalHeaderFormat(VerticalHeaderFormat format)//设置竖直头的样式,参数见枚举3
void	setMaximumDate(const QDate & date)
void	setMinimumDate(const QDate & date)
void	setSelectionMode(SelectionMode mode)//选择模式,参数枚举型,有单选与不可选两种,见枚举值说明2
void	setWeekdayTextFormat(Qt::DayOfWeek dayOfWeek, const QTextCharFormat & format)//设置一个星期的第一天,默认星期天,即图中第一列为“星期天”

int	dateEditAcceptDelay() const
bool	isDateEditEnabled() const
QMap	dateTextFormat() const
QTextCharFormat	dateTextFormat(const QDate & date) const
Qt::DayOfWeek	firstDayOfWeek() const
QTextCharFormat	headerTextFormat() const
HorizontalHeaderFormat	horizontalHeaderFormat() const
QDate	maximumDate() const
QDate	minimumDate() const
SelectionMode	selectionMode() const
VerticalHeaderFormat	verticalHeaderFormat() const
QTextCharFormat	weekdayTextFormat(Qt::DayOfWeek dayOfWeek) const

bool	isGridVisible() const
bool	isNavigationBarVisible() const
int	monthShown() const
QDate	selectedDate() const//返回当前选定的日期
int	yearShown() const//返回当前选定年份值,2014,加上上一个就是完整的年月日了
1,enum Qt::DayOfWeek

Constant Value
Qt::Monday 1
Qt::Tuesday 2
Qt::Wednesday 3
Qt::Thursday 4
Qt::Friday 5
Qt::Saturday 6
Qt::Sunday 7
2,enum QCalendarWidget::SelectionMode

Constant Value Description
QCalendarWidget::NoSelection 0 不可选,图中dataText区域单击无效果
QCalendarWidget::SingleSelection 1 可选,单击其它日期后背景变蓝(默认)
3,enum QCalendarWidget::HorizontalHeaderFormat

Constant Value Description
QCalendarWidget::SingleLetterDayNames 1 只显示一个字符,英文Monday显示“M”,中文周一显示“周”
QCalendarWidget::ShortDayNames 2 显示缩减名(如Monday时Mon).中文没效果
QCalendarWidget::LongDayNames 3 显示全名
QCalendarWidget::NoHorizontalHeader 0 隐藏
3,enum QCalendarWidget::SelectionMode
Constant Value Description
QCalendarWidget::ISOWeekNumbers 1 显示如图中的默认数字
QCalendarWidget::NoVerticalHeader 0 隐藏

Public Slots

void setCurrentPage(int year, int month)
void setDateRange(const QDate & min, const QDate & max)
void setGridVisible(bool show)//是否显示网格,格子样子见下方例子
void setNavigationBarVisible(bool visible)//最上方蓝色的导航条,去掉后就只能选择当月的日期了
void setSelectedDate(const QDate & date)//默认显示的是当前日期,可以用这个改变
void showNextMonth()
void showNextYear()
void showPreviousMonth()
void showPreviousYear()
void showSelectedDate()
void showToday()

Signals

void activated(const QDate & date)
void clicked(const QDate & date)
void currentPageChanged(int year, int month)
void selectionChanged()


示例代码如下:
    //setDateTextFormat示例
    QDate date=QDate::currentDate();
    QTextCharFormat t;
    t.setBackground(Qt::gray);
    ui->calendarWidget->setDateTextFormat(date,t);
    
    
    ui->calendarWidget->setFirstDayOfWeek(Qt::Monday);

    ui->calendarWidget->setHorizontalHeaderFormat(QCalendarWidget::ShortDayNames);
    ui->calendarWidget->setVerticalHeaderFormat(QCalendarWidget::NoVerticalHeader);

    //ui->calendarWidget->setNavigationBarVisible(false);
    ui->calendarWidget->setGridVisible(true);
    ui->calendarWidget->setSelectionMode(QCalendarWidget::NoSelection);

    qDebug()<calendarWidget->yearShown();
结果如下(今天是2014年1月16日):
Qt模块化笔记之Qt Widgets——日历类_第3张图片

图中16号这个日期由setDateTextFormat()将它的背景设置成灰色,QTextCharFormat是一个用于修改文本样式的类。

左上角和右上角的箭头是改变月份的,也可在“一月”处点击,直接选择,“2014”字处点击后会变成一个spinbox,可直接编辑年份
其它部分不可修改。

你可能感兴趣的:(Qt模块化笔记之Widgets)