【初心者向け】Qt Widgetsで時間編集!QTimeEdit::QTimeEdit()の使い方を徹底解説


QTimeEdit::QTimeEdit()は、Qt Widgetsライブラリで提供される時間編集ウィジェットであるQTimeEditクラスのコンストラクタです。このコンストラクタは、以下の2つのオーバーロードされています。

  1. 引数なしコンストラクタ
    親ウィジェットをnullptrとして初期化します。
  2. QTime型引数を持つコンストラクタ
    親ウィジェットをnullptrとし、初期表示時間を引数のQTimeオブジェクトで設定します。

詳細

引数なしコンストラクタ

QTimeEdit::QTimeEdit(QWidget *parent = nullptr);

このコンストラクタは、親ウィジェットをnullptrとして初期化します。初期表示時間は00:00:00となります。

QTime型引数を持つコンストラクタ

QTimeEdit::QTimeEdit(const QTime &time, QWidget *parent = nullptr);

このコンストラクタは、親ウィジェットをnullptrとし、初期表示時間を引数のQTimeオブジェクトで設定します。

// 引数なしコンストラクタを使用
QTimeEdit *timeEdit = new QTimeEdit();

// QTime型引数を持つコンストラクタを使用
QTime time(13, 45, 0);
QTimeEdit *timeEdit = new QTimeEdit(time);
  • QTimeEditクラスは、スピンボックスとフォーマットされたテキスト入力フィールドを組み合わせて、時間編集機能を提供します。
  • QTimeEditクラスは、QDateTimeEditクラスを継承しています。


#include <QApplication>
#include <QWidget>
#include <QTimeEdit>

int main(int argc, char *argv[]) {
  QApplication app(argc, argv);

  // 親ウィジェットを作成
  QWidget parentWidget;

  // 引数なしコンストラクタを使用してQTimeEditを作成
  QTimeEdit *timeEdit1 = new QTimeEdit(&parentWidget);
  timeEdit1->setGeometry(50, 20, 100, 30);

  // QTime型引数を持つコンストラクタを使用してQTimeEditを作成
  QTime time(13, 45, 0);
  QTimeEdit *timeEdit2 = new QTimeEdit(time, &parentWidget);
  timeEdit2->setGeometry(160, 20, 100, 30);

  // 親ウィジェットを表示
  parentWidget.show();

  return app.exec();
}

このコードを実行すると、以下のウィジェットが表示されます。



  1. 引数なしコンストラクタ
    親ウィジェットをnullptrとして初期化します。
  2. QTime型引数を持つコンストラクタ
    親ウィジェットをnullptrとし、初期表示時間を引数のQTimeオブジェクトで設定します。

状況によっては、QTimeEdit::QTimeEdit()の代替方法が必要となる場合があります。以下に、代替方法の例をいくつか紹介します。

QDateTimeEditクラスを使用する

QDateTimeEditクラスは、時間と日付の両方を編集できるウィジェットです。QTimeEditクラスよりも汎用性が高く、QTimeEditと同じように時間編集にも使用できます。

QDateTimeEdit *dateTimeEdit = new QDateTimeEdit(Qt::TimeFormat);
dateTimeEdit->setDisplayFormat("hh:mm:ss");

カスタムウィジェットを作成する

QTimeEditクラスの機能が十分ではない場合は、カスタムウィジェットを作成することができます。スピンボックスとフォーマットされたテキスト入力フィールドなどを組み合わせて、独自の時間編集ウィジェットを作成することができます。

class TimeEdit : public QWidget {
public:
  TimeEdit(QWidget *parent = nullptr);

  void setTime(const QTime &time);
  QTime time() const;

private:
  QSpinBox *hourSpinBox;
  QSpinBox *minuteSpinBox;
  QSpinBox *secondSpinBox;
};

サードパーティ製のライブラリを使用する

Qt以外にも、時間編集機能を提供するサードパーティ製のライブラリがいくつかあります。これらのライブラリを使用することで、QTimeEditクラスよりも高度な機能を利用できる場合があります。


  • より多くの機能が必要な場合は、カスタムウィジェットを作成するか、サードパーティ製のライブラリを使用する必要があります。
  • シンプルで使いやすい方法が必要な場合は、QDateTimeEditクラスを使用するのがおすすめです。