このページでは

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に設定します:

グリッドが表示されるカレンダーウィジェット

QCalendarWidget *calendar;
calendar->setGridVisible(true);

最後に、setFirstDayOfWeek() 関数を使用して、最初の列の日を変更できます。

また、QCalendarWidget クラスは、selectionChanged()、activated()、currentPageChanged() の 3 つのシグナルを提供しており、これによりユーザーの操作に応答することが可能になります。

特定の曜日、特定の日付、またはヘッダーの表示についてQTextCharFormat を設定することで、ヘッダー、曜日、または個々の日の表示を大幅にカスタマイズできます。

カレンダーウィジェットでは、QTextCharFormat に定義されているプロパティの一部のみが使用されます。現在、ウィジェット内の個々のセルの表示を決定するために、foreground、background、font プロパティが使用されています。

QDate 、QDateEdit 、およびQTextCharFormatも参照してください 。

メンバ型のドキュメント

enum QCalendarWidget::HorizontalHeaderFormat

この列挙型は、水平ヘッダーで表示可能なさまざまな形式を定義しています。

定数値説明
QCalendarWidget::SingleLetterDayNames1ヘッダーには、曜日の名称の 1 文字の略語が表示されます(例:月曜日は「M」)。
QCalendarWidget::ShortDayNames2ヘッダーには、曜日の短い略語(例:月曜日は「Mon」)が表示されます。
QCalendarWidget::LongDayNames3ヘッダーには曜日の完全な名称(例: Monday)が表示されます。
QCalendarWidget::NoHorizontalHeader0ヘッダーは非表示になります。

関連項目: horizontalHeaderFormat() およびVerticalHeaderFormat 。

enum QCalendarWidget::SelectionMode

この列挙型は、カレンダー上で日付を選択する際にユーザーに提示される選択項目の種類を表します。

定数値説明
QCalendarWidget::NoSelection0日付を選択することはできません。
QCalendarWidget::SingleSelection11 つの日付のみ選択できます。

「selectionMode」も参照してください 。

enum QCalendarWidget::VerticalHeaderFormat

この列挙型は、縦方向のヘッダーに表示可能なさまざまな形式を定義します。

定数値説明
QCalendarWidget::ISOWeekNumbers1ヘッダーには、QDate::weekNumber() で規定されている ISO 週番号が表示されます。
QCalendarWidget::NoVerticalHeader0ヘッダーは非表示になります。

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

このプロパティは、テーブルグリッドが表示されるかどうかを指定します。

カレンダーウィジェットを表示するように設定する
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

このプロパティには、現在指定されている日付範囲の最大日付が格納されます。

ユーザーは、現在設定されている最大日付より後の日付を選択することはできません。

最大日付以降の dates が無効になっているカレンダーウィジェット

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()も参照してください 。

このプロパティは、ナビゲーションバーを表示するかどうかを指定します

このプロパティが「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.