チェックボックスを使いこなそう!Qt Widgets QCheckBox::QCheckBox()の使い方

2024-11-06

QCheckBox::QCheckBox()は、Qt Widgetsライブラリで提供されるチェックボックスウィジェットを初期化するコンストラクタです。このコンストラクタは、チェックボックスのテキストと親ウィジェットを指定して呼び出すことができます。

構文

QCheckBox::QCheckBox(const QString &text, QWidget *parent = nullptr);

パラメータ

  • parent: チェックボックスを配置する親ウィジェット (省略可)
  • text: チェックボックスに表示されるテキスト

戻り値

このコンストラクタは、新しく作成されたQCheckBoxオブジェクトを返します。

QCheckBox *checkBox = new QCheckBox("同意します", this);

この例では、"同意します"というテキストを持つチェックボックスが作成され、現在のウィジェット (this) に配置されます。

  • チェックボックスのスタイルは、setCheckState()メソッドを使用して設定できます。
  • チェックボックスがクリックされたときに発生するシグナルは、stateChanged()シグナルです。
  • チェックボックスのチェック状態は、isChecked()setChecked()メソッドを使用して取得および設定できます。
  • Qt Widgetsライブラリには、他にもさまざまなウィジェットが用意されています。
  • QCheckBoxウィジェットは、ユーザーがオプションを選択できるようにするのに役立ちます。


例 1: チェックボックスの作成と配置

#include <QtWidgets/QApplication>
#include <QtWidgets/QCheckBox>

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

  QCheckBox *checkBox = new QCheckBox("同意します", this);

  return app.exec();
}

例 2: チェック状態の取得と設定

この例では、チェックボックスのチェック状態を取得し、設定する方法を示します。

#include <QtWidgets/QApplication>
#include <QtWidgets/QCheckBox>

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

  QCheckBox *checkBox = new QCheckBox("同意します", this);

  // チェック状態を取得
  bool isChecked = checkBox->isChecked();

  // チェック状態を設定
  checkBox->setChecked(true);

  return app.exec();
}

例 3: チェックボックスのクリックイベントへの接続

この例では、チェックボックスがクリックされたときに発生するシグナルに接続し、チェック状態をログ出力する方法を示します。

#include <QtWidgets/QApplication>
#include <QtWidgets/QCheckBox>

void onStateChanged(bool checked) {
  qDebug() << "チェック状態:" << checked;
}

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

  QCheckBox *checkBox = new QCheckBox("同意します", this);

  // チェックボックスのクリックイベントに接続
  connect(checkBox, &QCheckBox::stateChanged, onStateChanged);

  return app.exec();
}


QRadioButton を使用する

もし、排他的な選択オプションを提供したい場合は、QRadioButton ウィジェットを使用することを検討してください。QRadioButton ウィジェットは、互いに排他的な一群のボタンをグループ化することができます。ユーザーは、グループ内のいずれか 1 つのボタンしか選択できません。

QHBoxLayout *layout = new QHBoxLayout;
for (const QString &text : {"オプション 1", "オプション 2", "オプション 3"}) {
  QRadioButton *radioButton = new QRadioButton(text);
  layout->addWidget(radioButton);
}
widget->setLayout(layout);

QButtonGroup を使用する

複数のチェックボックスを排他的に制御したい場合は、QButtonGroup を使用することができます。QButtonGroup は、互いに排他的な一群のボタンをグループ化することができます。ユーザーは、グループ内のいずれか 1 つのボタンしか選択できません。

QButtonGroup *buttonGroup = new QButtonGroup;
for (const QString &text : {"オプション 1", "オプション 2", "オプション 3"}) {
  QCheckBox *checkBox = new QCheckBox(text);
  buttonGroup->addButton(checkBox);
}

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

より高度な制御が必要な場合は、独自のチェックボックスウィジェットを作成することができます。これにより、外観、動作、機能を完全にカスタマイズできます。

class MyCheckBox : public QWidget {
public:
  MyCheckBox(const QString &text, QWidget *parent = nullptr);

signals:
  void stateChanged(bool checked);

private:
  QLabel *label;
  QCheckBox *checkBox;
};

MyCheckBox::MyCheckBox(const QString &text, QWidget *parent) : QWidget(parent) {
  label = new QLabel(text);
  checkBox = new QCheckBox;

  QHBoxLayout *layout = new QHBoxLayout;
  layout->addWidget(label);
  layout->addWidget(checkBox);
  setLayout(layout);

  connect(checkBox, &QCheckBox::stateChanged, this, &MyCheckBox::stateChanged);
}

QCheckBox::setCheckState() を使用する

既存の QCheckBox ウィジェットのチェック状態を設定したい場合は、setCheckState() メソッドを使用することができます。

QCheckBox *checkBox = new QCheckBox("同意します");
checkBox->setCheckState(Qt::Checked);
  • 既存の QCheckBox ウィジェットのチェック状態を設定したい場合は、setCheckState() メソッドを使用します。
  • より高度な制御が必要な場合は、独自のチェックボックスウィジェットを作成します。
  • 排他的な選択オプションを提供したい場合は、QRadioButton または QButtonGroup を使用します。