QCalendarWidget 类
QCalendarWidget 类提供了一个基于月度的日历小部件,允许用户选择一个日期。更多信息...
头文件 | #include <QCalendarWidget> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
qmake | QT += widgets |
继承 | QWidget |
公共类型
枚举 | HorizontalHeaderFormat { SingleLetterDayNames, ShortDayNames, LongDayNames, NoHorizontalHeader } |
枚举 | SelectionMode { NoSelection, SingleSelection } |
枚举 | VerticalHeaderFormat { ISOWeekNumbers, NoVerticalHeader } |
属性
|
|
公共函数
QCalendarWidget(QWidget *parent = nullptr) | |
virtual | ~QCalendarWidget() |
QCalendar | calendar() const |
void | clearMaximumDate() |
void | clearMinimumDate() |
int | dateEditAcceptDelay() const |
QMap<QDate, QTextCharFormat> | dateTextFormat() const |
QTextCharFormat | dateTextFormat(QDate date) const |
Qt::DayOfWeek | firstDayOfWeek() const |
QTextCharFormat | headerTextFormat() const |
QCalendarWidget::HorizontalHeaderFormat | horizontalHeaderFormat() const |
bool | isDateEditEnabled() const |
bool | isGridVisible() const |
bool | isNavigationBarVisible() const |
QDate | maximumDate() const |
QDate | minimumDate() const |
int | monthShown() const |
QDate | selectedDate() const |
QCalendarWidget::SelectionMode | selectionMode() const |
void | setCalendar(QCalendar c) |
void | setDateEditAcceptDelay(int delay) |
void | setDateEditEnabled(bool enable) |
void | setDateTextFormat(QDate date, const QTextCharFormat &format) |
void | setFirstDayOfWeek(Qt::DayOfWeek dayOfWeek) |
void | setHeaderTextFormat(const QTextCharFormat &format) |
void | setHorizontalHeaderFormat(QCalendarWidget::HorizontalHeaderFormat format) |
void | setMaximumDate(QDate date) |
void | setMinimumDate(QDate date) |
void | setSelectionMode(QCalendarWidget::SelectionMode mode) |
void | setVerticalHeaderFormat(QCalendarWidget::VerticalHeaderFormat format) |
void | setWeekdayTextFormat(Qt::DayOfWeek dayOfWeek, const QTextCharFormat &format) |
QCalendarWidget::VerticalHeaderFormat | verticalHeaderFormat() const |
QTextCharFormat | weekdayTextFormat(Qt::DayOfWeek dayOfWeek) const |
int | yearShown() const |
重新实现的公共函数
virtual QSize | minimumSizeHint() const override |
virtual QSize | sizeHint() const override |
公共槽
void | setCurrentPage(int year, int month) |
void | setDateRange(QDate min, QDate max) |
void | setGridVisible(bool show) |
void | setNavigationBarVisible(bool visible) |
void | setSelectedDate(QDate date) |
void | showNextMonth() |
void | showNextYear() |
void | showPreviousMonth() |
void | showPreviousYear() |
void | showSelectedDate() |
void | showToday() |
信号
void | activated(QDate date) |
void | clicked(QDate date) |
void | currentPageChanged(int year, int month) |
void | selectionChanged() |
受保护的函数
virtual void | paintCell(QPainter *painter, const QRect &rect, QDate date) const |
void | updateCell(QDate date) |
void | updateCells() |
重新实现的受保护函数
virtual bool | event(QEvent *event) override |
virtual bool | eventFilter(QObject *watched, QEvent *event) override |
virtual void | keyPressEvent(QKeyEvent *event) override |
virtual void | mousePressEvent(QMouseEvent *event) override |
virtual void | resizeEvent(QResizeEvent *event) override |
详细描述
小部件以当前月份和年份初始化,但QCalendarWidget提供了几个公共槽来更改显示的年份和月份。
默认情况下,今日日期被选中,用户可以使用鼠标和键盘选择日期。当前选中的日期可以使用selectedDate()函数检索。可以通过设置minimumDate和maximumDate属性来限制用户选择日期范围。或者,可以使用setDateRange()便利槽一次设置这两个属性。将selectionMode属性设置为NoSelection以禁止用户选择。请注意,还可以使用setSelectedDate()槽以编程方式选择日期。
可以使用monthShown()和yearShown()函数分别检索当前显示的月份和年份。
新创建的日历小部件使用缩略的星期名称,周六和周日用红色标记。日历网格不可见。显示周数,第一列的日是日历本地的第一周。
可以通过将horizontalHeaderFormat属性设置为QCalendarWidget::SingleLetterDayNames来将日期的表示改变为单个字母缩写(例如,“M”代表“星期一”)。将该属性设置为QCalendarWidget::LongDayNames将使标题显示完整的日名称。通过将verticalHeaderFormat属性设置为QCalendarWidget::NoVerticalHeader可以删除周数。可以通过使用gridVisible属性设置为true来通过setGridVisible()函数打开日历网格
QCalendarWidget *calendar; calendar->setGridVisible(true); |
最后,可以使用setFirstDayOfWeek()函数改变第一列的日。
QCalendarWidget类还提供了三个信号,selectionChanged,activated和currentPageChanged,使得响应用户交互成为可能。
可以通过为某些特殊的工作日、特定日期或标题的渲染设置QTextCharFormat来在很大程度上自定义标题、工作日或单个日的渲染。
日历小部件仅使用QTextCharFormat属性的一部分。目前,使用前景、背景和字体属性来确定小部件中单独单元格的渲染。
另请参阅QDate,QDateEdit和QTextCharFormat
成员类型文档
enum QCalendarWidget::HorizontalHeaderFormat
此枚举类型定义了水平标题可以显示的各种格式。
常数 | 值 | 描述 |
---|---|---|
QCalendarWidget::SingleLetterDayNames | 1 | 标题显示日名称的单个字母缩写(例如,M代表星期一)。 |
QCalendarWidget::ShortDayNames | 2 | 标题显示日名称的短缩写(例如,Mon代表星期一)。 |
QCalendarWidget::LongDayNames | 3 | 标题显示完整的日名称(例如,星期一)。 |
QCalendarWidget::NoHorizontalHeader | 0 | 标题栏已隐藏。 |
另请参阅 horizontalHeaderFormat() 和 VerticalHeaderFormat。
枚举 QCalendarWidget::SelectionMode
该枚举描述了用户在日历中选择日期时所提供的选项类型。
常数 | 值 | 描述 |
---|---|---|
QCalendarWidget::NoSelection | 0 | 无法选择日期。 |
QCalendarWidget::SingleSelection | 1 | 可以单独选择日期。 |
另请参阅 selectionMode。
枚举 QCalendarWidget::VerticalHeaderFormat
该枚举类型定义了垂直标题可以显示的各种格式。
常数 | 值 | 描述 |
---|---|---|
QCalendarWidget::ISOWeekNumbers | 1 | 标题栏显示ISO周数字,如 QDate::weekNumber 所描述。 |
QCalendarWidget::NoVerticalHeader | 0 | 标题栏已隐藏。 |
属性文档
dateEditAcceptDelay : int
此属性指定在在接受之前,非活动日期编辑显示的时间。
如果日历小部件的日期编辑启用,则此属性指定自最新用户输入后,日期编辑保持打开的时间长度(以毫秒为单位)。一旦过了这段时间,日期编辑中指定的日期就会被接受,并关闭弹出窗口。
默认情况下,延迟定义为1500毫秒(1.5秒)。
访问函数
int | dateEditAcceptDelay() const |
void | setDateEditAcceptDelay(int delay) |
dateEditEnabled : bool
此属性指定是否启用日期编辑弹出窗口。
如果此属性启用,则按非修饰键将在焦点在小部件时弹出日期编辑,允许用户以当前区域设置的格式指定日期。
默认情况下,此属性是启用的。
与QDateEdit相比,日期编辑看起来更为简单,但用户可以使用左右箭头键在字段之间导航,使用上下箭头键增加或减少单独的字段值,并使用数字键直接输入值。
访问函数
bool | isDateEditEnabled() const |
void | setDateEditEnabled(bool enable) |
另请参阅 QCalendarWidget::dateEditAcceptDelay。
firstDayOfWeek : Qt::DayOfWeek
此属性保存了一个值,用于确定第一列显示的天数。
默认情况下,日历的区域设置中的第一周的第一天是在第一列中显示的天数。
访问函数
Qt::DayOfWeek | firstDayOfWeek() const |
void | setFirstDayOfWeek(Qt::DayOfWeek dayOfWeek) |
gridVisible : bool
此属性保存是否显示表格网格。
QCalendarWidget *calendar; calendar->setGridVisible(true); |
默认值是false。
访问函数
bool | isGridVisible() const |
void | setGridVisible(bool show) |
horizontalHeaderFormat : HorizontalHeaderFormat
此属性保存水平头部的格式。
默认值是 QCalendarWidget::ShortDayNames。
访问函数
QCalendarWidget::HorizontalHeaderFormat | horizontalHeaderFormat() const |
void | setHorizontalHeaderFormat(QCalendarWidget::HorizontalHeaderFormat format) |
maximumDate : QDate
此属性保存当前指定日期范围的最大日期。
用户将无法选择一个超过当前设置的最大日期的日期。
QCalendarWidget *calendar; calendar->setGridVisible(true); calendar->setMaximumDate(QDate(2006, 7, 3)); |
设置最大日期时,如果选择范围无效,将调整 minimumDate 和 selectedDate 属性。如果提供的日期不是有效的 QDate 对象,则 setMaximumDate() 函数不做任何操作。
默认最大日期是公元前9999年12月31日。您可以通过调用 clearMaximumDate() 恢复此默认值(自 Qt 6.6 开始)。
访问函数
QDate | maximumDate() const |
void | setMaximumDate(QDate date) |
void | clearMaximumDate() |
另请参阅 setDateRange。
minimumDate : QDate
此属性保存当前指定日期范围的最小日期。
用户将无法选择一个早于当前设置的最小日期的日期。
QCalendarWidget *calendar; calendar->setGridVisible(true); calendar->setMinimumDate(QDate(2006, 6, 19)); |
设置最小日期时,如果选择范围无效,将调整 maximumDate 和 selectedDate 属性。如果提供的日期不是有效的 QDate 对象,则 setMinimumDate() 函数不做任何操作。
默认最小日期是公元前4714年11月25日。您可以通过调用 clearMinimumDate() 恢复此默认值(自 Qt 6.6 开始)。
访问函数
QDate | minimumDate() const |
void | setMinimumDate(QDate date) |
void | clearMinimumDate() |
另请参阅 setDateRange。
navigationBarVisible : bool
此属性保存导航栏是否显示
当此属性设置为 true
(默认值)时,接下来的月份、上一个月份、月份选择、年份选择控件显示在顶部。
当属性设置为 false 时,这些控件将被隐藏。
访问函数
bool | isNavigationBarVisible() const |
void | setNavigationBarVisible(bool visible) |
selectedDate : QDate
此属性保存当前选择的日期。
所选日期必须在 minimumDate 和 maximumDate 属性指定的日期范围内。默认情况下,所选日期是当前日期。
访问函数
QDate | selectedDate() const |
void | setSelectedDate(QDate date) |
另请参阅 setDateRange。
selectionMode : SelectionMode
此属性保存用户可以在日历中进行的选择的类型
当此属性设置为 SingleSelection 时,用户可以使用鼠标或键盘在最小和最大允许日期之间选择日期。
当属性设置为 NoSelection 时,用户将无法选择日期,但它们仍然可以通过编程进行选择。请注意,当属性设置为 NoSelection 时,所选日期仍然是日历的所选日期。
默认值是 SingleSelection。
访问函数
QCalendarWidget::SelectionMode | selectionMode() const |
void | setSelectionMode(QCalendarWidget::SelectionMode mode) |
verticalHeaderFormat : VerticalHeaderFormat
此属性保存了垂直标题的格式。
默认值是 QCalendarWidget::ISOWeekNumber。
访问函数
QCalendarWidget::VerticalHeaderFormat | verticalHeaderFormat() const |
void | setVerticalHeaderFormat(QCalendarWidget::VerticalHeaderFormat format) |
成员函数文档
[显式]
QCalendarWidget::QCalendarWidget(QWidget *parent = nullptr)
构建具有给定 parent 的日历小部件。
小部件使用当前月份和年份初始化,并选择今天的日期。
另请参阅 setCurrentPage。
[虚拟 noexcept]
QCalendarWidget::~QCalendarWidget()
销毁日历小部件。
[信号]
void QCalendarWidget::activated(QDate date)
每当用户按下 Retur n 或 Enter 键或在日历小部件中双击一个 日期 时,都会发出此信号。
QCalendar QCalendarWidget::calendar() const
报告此小部件所使用的日历系统。
另请参阅 setCalendar。
[信号]
void QCalendarWidget::clicked(QDate date)
当鼠标点击时,会发出此信号。通过 date 指定鼠标点击的日期。仅当在有效日期上点击时才会发出此信号,例如,日期不在 minimumDate() 和 maximumDate() 之外。如果选择模式是 NoSelection,则不会发出此信号。
[信号]
void QCalendarWidget::currentPageChanged(int year, int month)
当前显示的月份发生更改时,会发出此信号。将新 year 和 month 作为参数传递。
另请参阅 setCurrentPage。
QMap<QDate, QTextCharFormat> QCalendarWidget::dateTextFormat() const
从 QDate 到 QTextCharFormat 返回一个 QMap,显示所有使用特殊格式并改变其渲染的日期。
另请参阅 setDateTextFormat。
QTextCharFormat QCalendarWidget::dateTextFormat(QDate date) const
返回用于渲染日期的 QTextCharFormat。如果日期未特别渲染,字符格式可以为空。
[覆盖虚保护]
bool QCalendarWidget::event(QEvent *event)
重实现: QWidget::event(QEvent *event).
[覆盖虚保护]
bool QCalendarWidget::eventFilter(QObject *watched, QEvent *event)
重实现: QObject::eventFilter(QObject *watched, QEvent *event).
QTextCharFormat QCalendarWidget::headerTextFormat() const
返回用于渲染标题的文本字符格式。
另请参阅setHeaderTextFormat().
[覆盖虚保护]
void QCalendarWidget::keyPressEvent(QKeyEvent *event)
重实现: QWidget::keyPressEvent(QKeyEvent *event).
[覆盖虚]
QSize QCalendarWidget::minimumSizeHint() const
重实现属性访问函数: QWidget::minimumSizeHint.
int QCalendarWidget::monthShown() const
返回当前显示的月份。月份从1到12编号。
另请参阅yearShown() 和 setCurrentPage().
[覆盖虚保护]
void QCalendarWidget::mousePressEvent(QMouseEvent *event)
重实现: QWidget::mousePressEvent(QMouseEvent *event).
[虚保护]
void QCalendarWidget::paintCell(QPainter *painter, const QRect &rect, QDate date) const
使用给定的 painter 和 rect 绘制指定 date 的单元格。
[覆盖虚保护]
void QCalendarWidget::resizeEvent(QResizeEvent *event)
重实现: QWidget::resizeEvent(QResizeEvent *event).
[信号]
void QCalendarWidget::selectionChanged()
当当前选定的日期更改时,会发出此信号。
当前选定的日期可以通过鼠标或键盘更改,或者通过程序员使用 setSelectedDate() 更改。
另请参阅selectedDate().
void QCalendarWidget::setCalendar(QCalendar c)
将该设置为该小部件要使用的日历系统。
该小部件可以使用任何支持的日历系统。默认情况下,它使用公历。
另请参阅calendar()。
[槽位]
void QCalendarWidget::setCurrentPage(int year, int month)
显示指定的年的月份,而不改变选中的日期。使用setSelectedDate()函数来更改选中的日期。
可以使用monthShown()函数来检索当前显示的月,使用yearShown()函数来检索当前显示的年。
另请参阅yearShown()、monthShown()、showPreviousMonth()、showNextMonth()、showPreviousYear()和showNextYear()。
[槽位]
void QCalendarWidget::setDateRange(QDate min, QDate max)
通过设置minimumDate和maximumDate属性来定义日期范围。
日期范围限制用户选择,即用户只能选择指定日期范围内的日期。注意
QCalendarWidget *calendar; calendar->setDateRange(min, max);
与
QCalendarWidget *calendar; calendar->setMinimumDate(min); calendar->setMaximumDate(max);
如果或参数不是有效的QDate对象,则此函数不执行任何操作。
另请参阅setMinimumDate()和setMaximumDate()。
void QCalendarWidget::setDateTextFormat(QDate date, const QTextCharFormat &format)
将使用设置指定日期的渲染格式。
如果是null,则清除所有日期格式。
另请参阅dateTextFormat()。
void QCalendarWidget::setHeaderTextFormat(const QTextCharFormat &format)
将渲染标题的文本字符格式设置为。如果您还设置了星期文本格式,此格式的前景色和背景色将优先于标题的格式。其他格式化信息仍由标题的格式决定。
另请参阅headerTextFormat()。
void QCalendarWidget::setWeekdayTextFormat(Qt::DayOfWeek dayOfWeek, const QTextCharFormat &format)
设置 week 中的 dayOfWeek 显示文本的格式为 format。在前景色和背景色的设置中,此格式将优于标题格式。其他文本格式信息则从标题格式中获取。
参见weekdayTextFormat() 和 setHeaderTextFormat().
[slot]
void QCalendarWidget::showNextMonth()
显示相对于当前显示月份的下一个月。注意,选定的日期不会更改。
参见showPreviousMonth()、setCurrentPage() 和 setSelectedDate().
[slot]
void QCalendarWidget::showNextYear()
显示相对于当前显示年份的次年相同月份。注意,选定的日期不会更改。
参见showPreviousYear()、setCurrentPage() 和 setSelectedDate().
[slot]
void QCalendarWidget::showPreviousMonth()
显示相对于当前显示月份的上一个月。注意,选定的日期不会更改。
参见showNextMonth()、setCurrentPage() 和 setSelectedDate().
[slot]
void QCalendarWidget::showPreviousYear()
显示相对于当前显示年份的上一年相同月份。注意,选定的日期不会更改。
参见showNextYear()、setCurrentPage() 和 setSelectedDate().
[slot]
void QCalendarWidget::showSelectedDate()
显示选定日期的月份。
参见selectedDate() 和 setCurrentPage().
[slot]
void QCalendarWidget::showToday()
显示今天的月份。
参见selectedDate() 和 setCurrentPage().
[override virtual]
QSize QCalendarWidget::sizeHint() const
重实了属性:QWidget::sizeHint 的访问函数。
[protected]
void QCalendarWidget::updateCell(QDate date)
更新由给定的 date 指定的单元格,除非禁用了更新或单元格已隐藏。
参见updateCells()、yearShown() 和 monthShown().
[protected]
void QCalendarWidget::updateCells()
除非禁用更新,否则更新所有可见单元格。
另请参阅updateCell()。
QTextCharFormat QCalendarWidget::weekdayTextFormat(Qt::DayOfWeek dayOfWeek) const
返回渲染周内某一天文本的字符格式。
另请参阅setWeekdayTextFormat() 和 headerTextFormat()。
int QCalendarWidget::yearShown() const
返回当前显示月份的年份。月份从1到12编号。
另请参阅monthShown() 和 setCurrentPage()。
© 2024 The Qt Company Ltd. 本文档中的贡献是各自所有者的版权。提供的文档是根据自由软件基金会发布的GNU自由文档许可协议第1.3版许可的。Qt及其相关标志是The Qt Company Ltd.在芬兰和其他国家/地区的商标。所有其他商标均为其各自所有者的财产。