QCalendarWidget Class
QCalendarWidget クラスは、ユーザーが日付を選択できる月単位のカレンダーウィジェットを提供します。詳細...
| ヘッダー: | #include <QCalendarWidget> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| 継承元: | QWidget |
パブリック型
| enum | HorizontalHeaderFormat { SingleLetterDayNames, ShortDayNames, LongDayNames, NoHorizontalHeader } |
| enum | SelectionMode { NoSelection, SingleSelection } |
| enum | 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() |
protected関数
| 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 に設定することで、曜日の表記を1文字の略語(「M」は「月曜日」を表す)に変更できます。同じプロパティをQCalendarWidget::LongDayNames に設定すると、ヘッダーには完全な曜日名が表示されます。 週番号を非表示にするには、verticalHeaderFormat プロパティをQCalendarWidget::NoVerticalHeader に設定します。カレンダーグリッドを表示するには、setGridVisible()関数を使用してgridVisible プロパティをtrueに設定します:
|
|
最後に、setFirstDayOfWeek() 関数を使用して、最初の列の日を変更できます。
また、QCalendarWidget クラスは、selectionChanged()、activated()、currentPageChanged() の 3 つのシグナルを提供しており、これによりユーザーの操作に応答することが可能になります。
特定の曜日、特定の日付、またはヘッダーの表示についてQTextCharFormat を設定することで、ヘッダー、曜日、または個々の日の表示を大幅にカスタマイズできます。
カレンダーウィジェットでは、QTextCharFormat に定義されているプロパティの一部のみが使用されます。現在、ウィジェット内の個々のセルの表示を決定するために、foreground、background、font プロパティが使用されています。
QDate 、QDateEdit 、およびQTextCharFormatも参照してください 。
メンバ型のドキュメント
enum QCalendarWidget::HorizontalHeaderFormat
この列挙型は、水平ヘッダーで表示可能なさまざまな形式を定義しています。
| 定数 | 値 | 説明 |
|---|---|---|
QCalendarWidget::SingleLetterDayNames | 1 | ヘッダーには、曜日の名称の 1 文字の略語が表示されます(例:月曜日は「M」)。 |
QCalendarWidget::ShortDayNames | 2 | ヘッダーには、曜日の短い略語(例:月曜日は「Mon」)が表示されます。 |
QCalendarWidget::LongDayNames | 3 | ヘッダーには曜日の完全な名称(例: Monday)が表示されます。 |
QCalendarWidget::NoHorizontalHeader | 0 | ヘッダーは非表示になります。 |
関連項目: horizontalHeaderFormat() およびVerticalHeaderFormat 。
enum QCalendarWidget::SelectionMode
この列挙型は、カレンダー上で日付を選択する際にユーザーに提示される選択項目の種類を表します。
| 定数 | 値 | 説明 |
|---|---|---|
QCalendarWidget::NoSelection | 0 | 日付を選択することはできません。 |
QCalendarWidget::SingleSelection | 1 | 1 つの日付のみ選択できます。 |
「selectionMode」も参照してください 。
enum QCalendarWidget::VerticalHeaderFormat
この列挙型は、縦方向のヘッダーに表示可能なさまざまな形式を定義します。
| 定数 | 値 | 説明 |
|---|---|---|
QCalendarWidget::ISOWeekNumbers | 1 | ヘッダーには、QDate::weekNumber() で規定されている ISO 週番号が表示されます。 |
QCalendarWidget::NoVerticalHeader | 0 | ヘッダーは非表示になります。 |
verticalHeaderFormat() およびHorizontalHeaderFormatも参照してください 。
プロパティのドキュメント
dateEditAcceptDelay : int
このプロパティは、非アクティブな日付編集フィールドの内容が確定されるまでの表示時間を指定します
カレンダーウィジェットのdate edit is enabled が設定されている場合、このプロパティは、直近のユーザー入力後に日付編集フィールドが開いたままになる時間(ミリ秒単位)を指定します。この時間が経過すると、日付編集フィールドで指定された日付が確定され、ポップアップが閉じられます。
デフォルトでは、この遅延時間は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
このプロパティは、テーブルグリッドが表示されるかどうかを指定します。
![]() |
|
デフォルト値は false です。
アクセス関数:
| bool | isGridVisible() const |
| void | setGridVisible(bool show) |
horizontalHeaderFormat : HorizontalHeaderFormat
このプロパティは、水平ヘッダーの書式を指定します。
デフォルト値はQCalendarWidget::ShortDayNames です。
アクセス関数:
| QCalendarWidget::HorizontalHeaderFormat | horizontalHeaderFormat() const |
| void | setHorizontalHeaderFormat(QCalendarWidget::HorizontalHeaderFormat format) |
maximumDate : QDate
このプロパティには、現在指定されている日付範囲の最大日付が格納されます。
ユーザーは、現在設定されている最大日付より後の日付を選択することはできません。
|
|
最大日付を設定する際、選択範囲が無効になった場合は、minimumDate およびselectedDate プロパティが調整されます。指定された日付が有効なQDate オブジェクトでない場合、setMaximumDate() 関数は何も行いません。
デフォルトの最大日付は西暦9999年12月31日です。clearMaximumDate() を呼び出すことで、このデフォルト設定に戻すことができます(Qt 6.6以降)。
アクセス関数:
| QDate | maximumDate() const |
| void | setMaximumDate(QDate date) |
| void | clearMaximumDate() |
setDateRange()も参照してください 。
minimumDate : QDate
このプロパティには、現在指定されている日付範囲の最小日付が格納されます。
ユーザーは、現在設定されている最小日付より前の日付を選択することはできません。
|
|
最小日付を設定する際、選択範囲が無効になった場合は、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) |
メンバ関数のドキュメント
[explicit] QCalendarWidget::QCalendarWidget(QWidget *parent = nullptr)
指定されたparent を使用して、カレンダーウィジェットを作成します。
ウィジェットは現在の月と年で初期化され、現在選択されている日付は今日になります。
setCurrentPage()も参照してください 。
[virtual noexcept] QCalendarWidget::~QCalendarWidget()
カレンダーウィジェットを削除します。
[signal] void QCalendarWidget::activated(QDate date)
この信号は、ユーザーがReturnキーまたはEnterキーを押すか、カレンダーウィジェット内のdate をダブルクリックするたびに発信されます。
QCalendar QCalendarWidget::calendar() const
このウィジェットで使用されているカレンダーシステムを報告してください。
setCalendar()も参照してください 。
[signal] void QCalendarWidget::clicked(QDate date)
このシグナルは、マウスボタンがクリックされたときに発せられます。マウスがクリックされた日付は、date で指定されます。このシグナルは、有効な日付がクリックされた場合にのみ発せられます。つまり、日付がminimumDate()およびmaximumDate()の範囲外ではない場合です。選択モードがNoSelection の場合、このシグナルは発せられません。
[signal] 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
date に対して、QTextCharFormat を返します。日付が特別な形式で表示されない場合は、char 形式を空にすることも可能です。
[override virtual protected] bool QCalendarWidget::event(QEvent *event)
QWidget::event(QEvent *event) を再実装します。
[override virtual protected] bool QCalendarWidget::eventFilter(QObject *watched, QEvent *event)
QObject::eventFilter(QObject *watched, QEvent *event) の再実装です。
QTextCharFormat QCalendarWidget::headerTextFormat() const
ヘッダーをレンダリングするためのテキスト文字形式を返します。
setHeaderTextFormat()も参照してください 。
[override virtual protected] void QCalendarWidget::keyPressEvent(QKeyEvent *event)
QWidget::keyPressEvent(QKeyEvent *event) を再実装します。
[override virtual] QSize QCalendarWidget::minimumSizeHint() const
プロパティ「QWidget::minimumSizeHint 」のアクセス関数を再実装します。
int QCalendarWidget::monthShown() const
現在表示されている月を返します。月は1から12までの番号が付けられています。
yearShown() およびsetCurrentPage()も参照してください 。
[override virtual protected] void QCalendarWidget::mousePressEvent(QMouseEvent *event)
QWidget::mousePressEvent(QMouseEvent *event) を再実装します。
[virtual protected] void QCalendarWidget::paintCell(QPainter *painter, const QRect &rect, QDate date) const
指定されたdate で指定されたセルを、指定されたpainter およびrect を使用して塗りつぶします。
[override virtual protected] void QCalendarWidget::resizeEvent(QResizeEvent *event)
QWidget::resizeEvent (QResizeEvent *event)を再実装します。
[signal] void QCalendarWidget::selectionChanged()
この信号は、現在選択されている日付が変更されたときに発信されます。
現在選択されている日付は、ユーザーがマウスやキーボードを使用して変更することも、プログラマが `setSelectedDate()` を使用して変更することもできます。
selectedDate()も参照してください 。
void QCalendarWidget::setCalendar(QCalendar c)
このウィジェットで使用するカレンダーシステムとして、c を設定します。
このウィジェットは、サポートされている任意のカレンダーシステムを使用できます。デフォルトでは、グレゴリオ暦が使用されます。
calendar()も参照してください 。
[slot] void QCalendarWidget::setCurrentPage(int year, int month)
選択された日付を変更せずに、指定されたyear のmonth を表示します。選択された日付を変更するには、setSelectedDate()関数を使用してください。
現在表示されている月と年は、それぞれmonthShown()関数およびyearShown()関数を使用して取得できます。
関連項目: yearShown()、monthShown()、showPreviousMonth()、showNextMonth()、showPreviousYear()、およびshowNextYear()。
[slot] void QCalendarWidget::setDateRange(QDate min, QDate max)
minimumDate およびmaximumDate プロパティを設定することで、日付範囲を定義します。
この日付範囲により、ユーザーの選択が制限されます。つまり、ユーザーは指定された日付範囲内の日付のみを選択できます。なお、
QCalendarWidget *calendar;
calendar->setDateRange(min, max);これは
QCalendarWidget *calendar;
calendar->setMinimumDate(min);
calendar->setMaximumDate(max);min またはmax パラメータのいずれかが有効な `QDate ` オブジェクトでない場合、この関数は何も実行しません。
setMinimumDate() およびsetMaximumDate()も参照してください 。
void QCalendarWidget::setDateTextFormat(QDate date, const QTextCharFormat &format)
指定されたdate のレンダリングに使用する形式を、format で指定された形式に設定します。
date がnullの場合、すべての日付形式がクリアされます。
dateTextFormat()も参照してください 。
void QCalendarWidget::setHeaderTextFormat(const QTextCharFormat &format)
ヘッダーの表示に使用するテキスト文字形式を `format` に設定します。曜日用のテキスト形式も設定している場合、この形式の前景色と背景色がヘッダーの形式よりも優先されます。その他の書式設定情報は、引き続きヘッダーの形式に基づいて決定されます。
headerTextFormat()も参照してください 。
void QCalendarWidget::setWeekdayTextFormat(Qt::DayOfWeek dayOfWeek, const QTextCharFormat &format)
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
dayOfWeek にあるように、曜日の表示に用いるテキスト文字形式を返します。
setWeekdayTextFormat() およびheaderTextFormat()も参照してください 。
int QCalendarWidget::yearShown() const
現在表示されている月の年を返します。月の番号は1から12までです。
monthShown() およびsetCurrentPage()も参照してください 。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.


