日历类QCalendarWidget 主要用于选择一个日期。直接继承自QWidget,外观如下:
属性值字面解释如下:
Properties
|
|
公有函数详细解释始下:
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<QDate, QTextCharFormat> 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 |
Constant | Value | Description |
---|---|---|
QCalendarWidget::NoSelection | 0 | 不可选,图中dataText区域单击无效果 |
QCalendarWidget::SingleSelection | 1 | 可选,单击其它日期后背景变蓝(默认) |
Constant | Value | Description |
---|---|---|
QCalendarWidget::SingleLetterDayNames | 1 | 只显示一个字符,英文Monday显示“M”,中文周一显示“周” |
QCalendarWidget::ShortDayNames | 2 | 显示缩减名(如Monday时Mon).中文没效果 |
QCalendarWidget::LongDayNames | 3 | 显示全名 |
QCalendarWidget::NoHorizontalHeader | 0 | 隐藏 |
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()<<ui->calendarWidget->yearShown();
结果如下(今天是2014年1月16日):
图中16号这个日期由setDateTextFormat()将它的背景设置成灰色,QTextCharFormat是一个用于修改文本样式的类。
左上角和右上角的箭头是改变月份的,也可在“一月”处点击,直接选择,“2014”字处点击后会变成一个spinbox,可直接编辑年份
其它部分不可修改。