Qt Widgets でユーザーから整数値を取得する: QInputDialog::getInt() 関数徹底解説

2024-04-02

Qt Widgets の QInputDialog::getInt() 関数

この関数の使い方は以下の通りです。

int QInputDialog::getInt(
    QWidget *parent,
    const QString &title,
    const QString &label,
    int value = 0,
    int min = -2147483647,
    int max = 2147483647,
    int step = 1,
    bool *ok = 0,
    Qt::WindowFlags flags = 0
)

引数

  • parent: 親ウィジェット。通常は、この関数を呼び出すウィジェットを指定します。
  • title: ダイアログのタイトル。
  • label: ユーザーに表示するラベル。
  • value: 初期値としてスピンボックスに設定される値。
  • min: 入力可能な最小値。
  • max: 入力可能な最大値。
  • step: スピンボックスの値が変化するステップ数。
  • ok: ユーザーが OK ボタンをクリックしたかどうかを示すブール値ポインタ。
  • flags: ウィジェットのフラグ。

戻り値

  • ユーザーが入力した整数値。ユーザーがキャンセルボタンをクリックした場合は、value が返されます。

// ユーザーから年齢を入力させる例

QWidget *window = new QWidget;

int age = QInputDialog::getInt(
    window,
    "年齢入力",
    "あなたの年齢を入力してください:",
    20,
    1,
    120,
    1
);

if (age > 0) {
    // 入力された年齢を処理
} else {
    // ユーザーがキャンセルボタンをクリックした
}

補足

  • QInputDialog::getInt() 関数は、静的関数です。そのため、オブジェクトを作成せずに直接呼び出すことができます。
  • QInputDialog クラスには、getText()getItem() などの他の関数も用意されています。これらの関数は、それぞれテキストやリスト項目を取得するためのダイアログを表示します。


Qt Widgets の QInputDialog::getInt() 関数を使ったサンプルコード

ユーザーから年齢と性別を入力させる

QWidget *window = new QWidget;

int age = QInputDialog::getInt(
    window,
    "年齢入力",
    "あなたの年齢を入力してください:",
    20,
    1,
    120,
    1
);

if (age > 0) {
    // 入力された年齢を処理
} else {
    // ユーザーがキャンセルボタンをクリックした
}

QString gender = QInputDialog::getText(
    window,
    "性別入力",
    "あなたの性別を入力してください:",
    "男性"
);

if (!gender.isEmpty()) {
    // 入力された性別を処理
} else {
    // ユーザーがキャンセルボタンをクリックした
}

ユーザーから好きな色を選ばせる

QWidget *window = new QWidget;

QStringList colors = {"赤", "青", "緑", "黄色", "紫"};

QString color = QInputDialog::getItem(
    window,
    "好きな色を選んでください",
    "好きな色を選んでください:",
    colors,
    0,
    false
);

if (!color.isEmpty()) {
    // 選ばれた色を処理
} else {
    // ユーザーがキャンセルボタンをクリックした
}

ユーザーから数値範囲を入力させる

QWidget *window = new QWidget;

int min, max;

bool ok = QInputDialog::getInt(
    window,
    "数値範囲入力",
    "最小値と最大値を入力してください:",
    &min,
    -100,
    100,
    1
);

if (ok) {
    // 入力された数値範囲を処理
} else {
    // ユーザーがキャンセルボタンをクリックした
}

詳細な設定

QWidget *window = new QWidget;

QInputDialog dialog(window);
dialog.setWindowTitle("詳細設定");
dialog.setLabelText("設定項目を選択してください:");
dialog.setComboBoxEditable(true);

QLineEdit *lineEdit = dialog.getLineEdit();
lineEdit->setPlaceholderText("ここに値を入力");

QComboBox *comboBox = dialog.getComboBox();
comboBox->addItem("項目1");
comboBox->addItem("項目2");
comboBox->addItem("項目3");

int result = dialog.exec();

if (result == QDialog::Accepted) {
    // 設定内容を処理
} else {
    // ユーザーがキャンセルボタンをクリックした
}


Qt Widgets でユーザー入力を受け取る他の方法

以下にいくつかの例を示します。

  • QLineEdit: 一行のテキスト入力を受け取るためのウィジェットです。
  • QSpinBox: 数値入力を受け取るためのウィジェットです。
  • QComboBox: リストから項目を選択するためのウィジェットです。
  • QCheckBox: チェックボックスをオン/オフして値を入力するためのウィジェットです。
  • QRadioButton: ラジオボタンを選択して値を入力するためのウィジェットです。

これらのウィジェットを組み合わせて、より複雑なユーザー入力を受け付けることができます。

例:

QWidget *window = new QWidget;

QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(new QLabel("名前:"));
layout->addWidget(new QLineEdit);
layout->addWidget(new QLabel("年齢:"));
layout->addWidget(new QSpinBox);
layout->addWidget(new QCheckBox("男性"));
layout->addWidget(new QRadioButton("女性"));

QPushButton *button = new QPushButton("OK");
layout->addWidget(button);

window->setLayout(layout);

QObject::connect(
    button,
    &QPushButton::clicked,
    [window]() {
        // ユーザー入力を受け取る処理
    }
);

window->show();

上記のコードは、ユーザーの名前、年齢、性別を入力するためのウィジェットを作成します。ユーザーが OK ボタンをクリックすると、QObject::connect() で設定されたスロットが呼び出され、ユーザー入力を受け取る処理を実行できます。

その他の方法

  • QInputDialog::getText()QInputDialog::getItem() などの関数を使う
  • QDialog をサブクラス化して独自のダイアログを作成する
  • Qt Designer を使ってユーザーインターフェースをデザインする



【Qt GUI Tips】QStaticText::performanceHint() でテキスト表示速度とメモリ使用量を最適化!

QStaticText::performanceHint() 関数は、QStaticText オブジェクトの内部キャッシュ設定を調整し、パフォーマンスを最適化するために使用されます。この関数は、テキスト表示速度とメモリ使用量の間でトレードオフを調整する役割を果たします。



Qt GUIにおけるポインティングデバイスイベント処理のサンプルコード

QPointerEvent::pointerType() の役割QPointerEvent::pointerType() は、QPointerEvent クラスのメンバー関数です。QPointerEvent は、ポインティングデバイスからのイベントを表すクラスです。QPointerEvent::pointerType() は、このイベントを生成したポインティングデバイスの種類を QPointingDevice::PointerType 型の値として返します。


Qt GUI アプリケーション開発における行列操作に関する参考資料

QMatrix4x4::fill() 関数は、4x4 変換行列を指定された値で初期化します。これは、Qt GUI アプリケーションで 3D グラフィックスやアニメーションを扱う際に役立ちます。関数宣言引数value: 行列のすべての要素に設定される値


QSupportedWritingSystems::QSupportedWritingSystems() 関数のサンプルコード

QSupportedWritingSystems::QSupportedWritingSystems() は、Qt GUI アプリケーションで使用されるテキスト入力システム (TIS) に関する情報を提供する関数です。この関数は、特定のロケールや言語でサポートされている書記体系の一覧を取得するために使用できます。


Qt GUIにおけるQOpenGLExtraFunctions::glSamplerParameteri()のトラブルシューティング

サンプラーオブジェクトは、テクスチャからテクセルを取得する方法を定義するOpenGLオブジェクトです。サンプラーオブジェクトは、テクスチャのどの部分を使用するか、どのようにフィルタリングするか、どのようにラップするかなどを設定することができます。



Qt WidgetsにおけるQGraphicsTextItem::anonymousの解説: テキストアイテムの匿名性を理解する

QGraphicsTextItem::anonymousは、Qt WidgetsにおけるQGraphicsTextItemクラスの仮想関数であるtype()が返す値を表す列挙体です。これは、テキストアイテムが匿名であることを示します。詳細QGraphicsTextItemクラスは、グラフィックスシーンにテキストアイテムを作成するために使用されます。テキストアイテムは、プレーンテキスト、HTML、またはリッチテキストを含むことができます。


Qt Widgets: QGraphicsItem::graphicsEffect() で視覚効果を適用する

この解説では、QGraphicsItem::graphicsEffect() の以下の内容について詳しく説明します:関数概要: 役割 戻り値 引数役割戻り値引数使用例: 影付きの矩形 ぼかし付きの画像影付きの矩形ぼかし付きの画像詳細解説: 所有権 スタック順序 複数の効果の適用 アニメーション パフォーマンス


Qt Widgets:QGraphicsSceneDragDropEventでドロップアクションをカスタマイズ

QGraphicsSceneDragDropEvent::dropAction()は、Qt Widgetsにおけるグラフィックシーン内のドラッグ&ドロップ操作において、実行されたドロップアクションを取得するための関数です。ドロップアクションとは、ドラッグされたアイテムがドロップされた際に実行される操作を指します。例えば、コピー、移動、リンク作成などがドロップアクションとして考えられます。


Qt WidgetsにおけるQWizard::restart()の使い方

使い方QWizard::restart()を使用するには、以下のコードを使用します。例以下の例は、QWizard::restart()を使用して、ウィザードを最初のページに戻す方法を示しています。注意事項QWizard::restart()は、ウィザードの現在のページを最初のページに戻します。


Qt Widgets: QGraphicsLayout::updateGeometry()でアイテムのレイアウトと配置を制御する

QGraphicsLayout::updateGeometry() は、Qt Widgetsフレームワークにおける重要な関数の一つであり、グラフィカルシーン内のアイテムのレイアウトと配置を更新するために使用されます。この関数は、アイテムのサイズや位置が変更された際に自動的に呼び出され、シーン全体の見た目を更新します。