このページでは

QAbstractButton Class

QAbstractButton クラスは、ボタンウィジェットの抽象基底クラスであり、ボタンに共通する機能を提供します。詳細...

ヘッダー: #include <QAbstractButton>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
継承元: QWidget
継承元:

QCheckBox、QPushButton 、QRadioButton 、およびQToolButton

プロパティ

パブリック関数

QAbstractButton(QWidget *parent = nullptr)
virtual ~QAbstractButton()
bool autoExclusive() const
bool autoRepeat() const
int autoRepeatDelay() const
int autoRepeatInterval() const
QButtonGroup *group() const
QIcon icon() const
QSize iconSize() const
bool isCheckable() const
bool isChecked() const
bool isDown() const
void setAutoExclusive(bool)
void setAutoRepeat(bool)
void setAutoRepeatDelay(int)
void setAutoRepeatInterval(int)
void setCheckable(bool)
void setDown(bool)
void setIcon(const QIcon &icon)
void setShortcut(const QKeySequence &key)
void setText(const QString &text)
QKeySequence shortcut() const
QString text() const

パブリックスロット

void animateClick()
void click()
void setChecked(bool)
void setIconSize(const QSize &size)
void toggle()

シグナル

void clicked(bool checked = false)
void pressed()
void released()
void toggled(bool checked)

protected 関数

virtual void checkStateSet()
virtual bool hitButton(const QPoint &pos) const
virtual void nextCheckState()

再実装されたプロテクトされた関数

virtual void changeEvent(QEvent *e) override
virtual bool event(QEvent *e) override
virtual void focusInEvent(QFocusEvent *e) override
virtual void focusOutEvent(QFocusEvent *e) override
virtual void keyPressEvent(QKeyEvent *e) override
virtual void keyReleaseEvent(QKeyEvent *e) override
virtual void mouseMoveEvent(QMouseEvent *e) override
virtual void mousePressEvent(QMouseEvent *e) override
virtual void mouseReleaseEvent(QMouseEvent *e) override
virtual void paintEvent(QPaintEvent *e) override = 0
virtual void timerEvent(QTimerEvent *e) override

詳細な説明

このクラスは、抽象的なボタンを実装しています。このクラスのサブクラスは、ユーザーの操作を処理し、ボタンの描画方法を指定します。

QAbstractButtonは、プッシュボタンとチェック可能(トグル)ボタンの両方をサポートしています。チェック可能ボタンは、QRadioButton およびQCheckBox クラスで実装されています。プッシュボタンは、QPushButton およびQToolButton クラスで実装されており、これらも必要に応じてトグル動作を提供します。

どのボタンでも、テキストとアイコンを含むラベルを表示できます。setText() はテキストを設定し、setIcon() はアイコンを設定します。ボタンが無効化されている場合、そのラベルは変更され、ボタンに「無効」な外観が与えられます。

ボタンが、アンパサンド('&')を含む文字列を持つテキストボタンである場合、QAbstractButtonは自動的にショートカットキーを作成します。例:

QPushButton *button = new QPushButton(tr("Ro&ck && Roll"), this);

Alt+C というショートカットがボタンに割り当てられます。つまり、ユーザーがAlt+C を押すと、ボタンはanimateClick() を呼び出します。詳細については、QShortcut のドキュメントを参照してください。実際のアンパサンドを表示するには、'&&' を使用します。

また、setShortcut() 関数を使用して、カスタムのショートカットキーを設定することもできます。これは主に、テキストが設定されていないため、自動的なショートカットキーが割り当てられないボタンで役立ちます。

button->setIcon(QIcon(":/images/print.png"));
button->setShortcut(tr("Alt+F7"));

Qt が提供するすべてのボタン(QPushButton 、QToolButton 、QCheckBox 、およびQRadioButton )は、text とicons の両方を表示できます。

QPushButton::setDefault() およびQPushButton::setAutoDefault() を使用することで、ダイアログ内のボタンをデフォルトボタンに設定できます。

QAbstractButton は、ボタンに使用される状態のほとんどを提供しています。

  • isDown() は、ボタンが押されているかどうかを示します。
  • isChecked() は、ボタンがチェックされているかどうかを示します。チェック可能なボタンのみが、チェックされたり解除されたりすることができます(以下を参照)。
  • isEnabled() は、ユーザーがそのボタンを押せるかどうかを示します。

    注: 他のウィジェットとは異なり、 QAbstractButton を継承したボタンは、無効化されている場合でもマウスイベントやコンテキストメニューイベントを受け付けます。

  • setAutoRepeat() は、ユーザーがボタンを押し続けた場合に、ボタンが自動繰り返しを行うかどうかを設定します。autoRepeatDelay およびautoRepeatInterval は、自動繰り返しの動作方法を定義します。
  • setCheckable() は、そのボタンがトグルボタンであるかどうかを設定します。

isDown() とisChecked() の違いは次のとおりです。 ユーザーがトグルボタンをクリックしてチェックを入れる場合、ボタンはまず「押下」状態になり、その後「チェック済み」状態になります。ユーザーがもう一度クリックして(チェックを解除する場合)、ボタンはまず「押下」状態になり、その後「チェックなし」状態になります(isChecked() およびisDown() はどちらも false になります)。

QAbstractButton は 4 つのシグナルを提供します。

  1. pressed() は、マウスカーソルがボタン内にある状態でマウスの左ボタンが押されたときに発火します。
  2. released() は、マウスカーソルがボタン内にある状態でマウスの左ボタンが押されたときに発火します。
  3. clicked() は、ボタンが最初に押されてから離されたとき、ショートカットキーが入力されたとき、またはclick() またはanimateClick() が呼び出されたときに発火します。
  4. toggled() は、トグルボタンの状態が変化したときに発火します。

QAbstractButton をサブクラス化するには、ボタンのアウトラインとテキストまたはピクマップを描画するために、少なくともpaintEvent() を再実装する必要があります。一般的には、sizeHint() も再実装することをお勧めします。また、場合によっては、hitButton()(ボタンの押下がボタン範囲内であるかどうかを判断するため)も再実装する必要があります。 3 状態以上のボタン(3 状態ボタンなど)の場合は、checkStateSet() およびnextCheckState() も再実装する必要があります。

QButtonGroupも参照してください 。

プロパティのドキュメント

autoExclusive : bool

このプロパティは、自動排他機能が有効かどうかを表します

自動排他性が有効になっている場合、同じ親ウィジェットに属するチェック可能なボタンは、あたかも同じ排他ボタングループの一部であるかのように動作します。排他ボタングループでは、一度にチェックできるボタンは 1 つだけです。別のボタンをチェックすると、以前にチェックされていたボタンのチェックが自動的に解除されます。

このプロパティは、ボタングループに属するボタンには影響しません。

ラジオボタンを除き、autoExclusiveはデフォルトでオフになっています。

アクセス関数:

bool autoExclusive() const
void setAutoExclusive(bool)

関連項目: QRadioButton 。

autoRepeat : bool

このプロパティは、autoRepeat が有効かどうかを示します

autoRepeatが有効になっている場合、ボタンが押されている間、pressed()、released()、およびclicked()シグナルが一定間隔で発火します。autoRepeatはデフォルトで無効になっています。初期遅延および繰り返し間隔は、autoRepeatDelay およびautoRepeatInterval によってミリ秒単位で定義されます。

注:ショートカットキーによってボタンが押された場合、自動リピートは有効になりますが、そのタイミング制御は本クラスではなくシステムによって行われます。pressed()、released()、およびclicked() シグナルは、通常の場合と同様に発火します。

アクセス関数:

bool autoRepeat() const
void setAutoRepeat(bool)

autoRepeatDelay : int

このプロパティは、自動リピートの初期遅延時間を指定します

「autoRepeat 」が有効になっている場合、「autoRepeatDelay」は、自動リピートが開始されるまでの初期遅延時間をミリ秒単位で定義します。

関連機能:

int autoRepeatDelay() const
void setAutoRepeatDelay(int)

「 autoRepeat 」および「autoRepeatInterval 」も参照してください 。

autoRepeatInterval : int

このプロパティは、自動リピートの間隔を指定します

「autoRepeat 」が有効になっている場合、「autoRepeatInterval」は自動リピートの間隔の長さをミリ秒単位で定義します。

アクセス関数:

int autoRepeatInterval() const
void setAutoRepeatInterval(int)

「 autoRepeat 」および「autoRepeatDelay 」も参照してください 。

checkable : bool

このプロパティは、ボタンにチェックマークを付けることができるかどうかを指定します

デフォルトでは、このボタンはチェックできません。

アクセス関数:

bool isCheckable() const
void setCheckable(bool)

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

checked : bool

このプロパティは、ボタンがチェックされているかどうかを表します

チェック可能なボタンのみがチェックされます。デフォルトでは、ボタンはチェックされていません。

アクセス関数:

bool isChecked() const
void setChecked(bool)

Notifierシグナル:

void toggled(bool checked)

checkableも参照してください 。

down : bool

このプロパティは、ボタンが押されているかどうかを表します

このプロパティがtrue の場合、ボタンは押下された状態になります。このプロパティをtrueに設定すると、pressed()およびclicked()のシグナルは発火しません。デフォルト値はfalseです。

アクセス関数:

bool isDown() const
void setDown(bool)

icon : QIcon

このプロパティは、ボタンに表示されるアイコンを保持します

アイコンのデフォルトサイズはGUIスタイルによって定義されますが、iconSize プロパティを設定することで調整可能です。

アクセス関数:

QIcon icon() const
void setIcon(const QIcon &icon)

iconSize : QSize

このプロパティには、このボタンに使用されるアイコンのサイズが格納されます。

デフォルトのサイズはGUIスタイルによって定義されます。これはアイコンの最大サイズです。これより小さいアイコンは拡大されません。

アクセス関数:

QSize iconSize() const
void setIconSize(const QSize &size)

shortcut : QKeySequence

このプロパティには、ボタンに関連付けられたニーモニックが格納されます

アクセス機能:

QKeySequence shortcut() const
void setShortcut(const QKeySequence &key)

text : QString

このプロパティには、ボタンに表示されるテキストが格納されます

ボタンにテキストがない場合、text() 関数は空の文字列を返します。

テキストにアンパサンド('&')が含まれている場合、その文字に対してショートカットが自動的に作成されます。'&' の後に続く文字がショートカットキーとして使用されます。テキストによってショートカットが定義されていない場合、以前のショートカットは上書きされるか、クリアされます。 詳細については、QShortcut のドキュメントを参照してください。実際のアンパサンドを表示するには、「&&」を使用してください。

デフォルトのテキストはありません。

アクセス関数:

QString text() const
void setText(const QString &text)

メンバ関数のドキュメント

[explicit] QAbstractButton::QAbstractButton(QWidget *parent = nullptr)

parent を持つ抽象的なボタンを構築します。

[virtual noexcept] QAbstractButton::~QAbstractButton()

そのボタンを削除します。

[slot] void QAbstractButton::animateClick()

アニメーション付きのクリックを実行します。ボタンが即座に押され、100ms後に離されます。

ボタンが離される前にこの関数を再度呼び出すと、離すまでのタイマーがリセットされます。

クリックに関連するすべてのシグナルは、適切に発火されます。

ボタンがdisabled.

click()も参照してください 。

[override virtual protected] void QAbstractButton::changeEvent(QEvent *e)

QWidget::changeEvent(QEvent *event) を再実装します。

[virtual protected] void QAbstractButton::checkStateSet()

この仮想ハンドラは、setChecked() が使用された際に呼び出されます(ただし、nextCheckState() の内部から呼び出された場合は除きます)。これにより、サブクラスはボタンの中間状態をリセットすることができます。

nextCheckState()も参照してください 。

[slot] void QAbstractButton::click()

クリックを実行します。

クリックに伴う通常のシグナルはすべて、適宜発信されます。ボタンがチェック可能な場合、ボタンの状態が切り替わります。

ボタンがdisabled.

animateClick()も参照してください 。

[signal] void QAbstractButton::clicked(bool checked = false)

このシグナルは、ボタンがアクティブになったとき(つまり、マウスカーソルがボタン内にある状態でボタンが押されてから離されたとき)、ショートカットキーが入力されたとき、またはclick() やanimateClick() が呼び出されたときに発火します。なお、setDown()、setChecked()、またはtoggle() を呼び出した場合は、このシグナルは発火しません。

ボタンがチェック可能である場合、checked は、ボタンがチェックされているときはtrue、チェックされていないときはfalseとなります。

pressed()、released()、およびtoggled()も参照してください 。

[override virtual protected] bool QAbstractButton::event(QEvent *e)

QWidget::event(QEvent *event) を再実装します。

[override virtual protected] void QAbstractButton::focusInEvent(QFocusEvent *e)

QWidget::focusInEvent(QFocusEvent *event) を再実装します。

[override virtual protected] void QAbstractButton::focusOutEvent(QFocusEvent *e)

QWidget::focusOutEvent (QFocusEvent *event)を再実装します。

QButtonGroup *QAbstractButton::group() const

このボタンが属するグループを返します。

ボタンがどのQButtonGroup にも属していない場合、この関数はnullptr を返します。

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

[virtual protected] bool QAbstractButton::hitButton(const QPoint &pos) const

pos がクリック可能なボタンの矩形内にある場合はtrue を返し、そうでない場合はfalse を返します。

デフォルトでは、クリック可能な領域はウィジェット全体です。サブクラスはこの関数を再実装して、さまざまな形状やサイズのクリック可能な領域に対応させることができます。

[override virtual protected] void QAbstractButton::keyPressEvent(QKeyEvent *e)

QWidget::keyPressEvent(QKeyEvent *event) を再実装します。

[override virtual protected] void QAbstractButton::keyReleaseEvent(QKeyEvent *e)

QWidget::keyReleaseEvent(QKeyEvent *event) を再実装します。

[override virtual protected] void QAbstractButton::mouseMoveEvent(QMouseEvent *e)

QWidget::mouseMoveEvent(QMouseEvent *event) を再実装します。

[override virtual protected] void QAbstractButton::mousePressEvent(QMouseEvent *e)

QWidget::mousePressEvent(QMouseEvent *event) を再実装します。

[override virtual protected] void QAbstractButton::mouseReleaseEvent(QMouseEvent *e)

QWidget::mouseReleaseEvent(QMouseEvent *event) を再実装します。

[virtual protected] void QAbstractButton::nextCheckState()

この仮想ハンドラは、ボタンがクリックされたときに呼び出されます。ボタンがisCheckable()の場合、デフォルトの実装ではsetChecked(!isChecked()))を呼び出します。これにより、サブクラスはボタンの中間状態を実装できるようになります。

checkStateSet()も参照してください 。

[override pure virtual protected] void QAbstractButton::paintEvent(QPaintEvent *e)

QWidget::paintEvent(QPaintEvent *event) を再実装します。

[signal] void QAbstractButton::pressed()

この信号は、ボタンが押されたときに発信されます。

released() およびclicked()も参照してください 。

[signal] void QAbstractButton::released()

この信号は、ボタンが離されたときに送信されます。

pressed()、clicked()、およびtoggled()も参照してください 。

[override virtual protected] void QAbstractButton::timerEvent(QTimerEvent *e)

QObject::timerEvent(QTimerEvent *event) を再実装します。

[slot] void QAbstractButton::toggle()

チェック可能なボタンの状態を切り替えます。

checkedも参照してください 。

[signal] void QAbstractButton::toggled(bool checked)

このシグナルは、チェック可能なボタンの状態が変化するたびに発火します。checked は、ボタンがチェックされている場合はtrue、チェックされていない場合はfalseになります。

これは、ユーザーの操作、click() スロットの起動、あるいはsetChecked() の呼び出しによって発生する場合があります。

排他的なボタングループ内のボタンの状態は、このシグナルが発信される前に更新されます。つまり、スロットは、状態が変化したグループ内のボタンから発信される「off」シグナルまたは「on」シグナルのいずれかに対して動作することができます。

たとえば、新たにチェックされたボタンから発せられるシグナルには反応するが、チェックが解除されたボタンからのシグナルは無視するスロットは、次のパターンを用いて実装できます:

void MyWidget::reactToToggle(bool checked)
{
   if (checked) {
      // Examine the new button states.
      ...
   }
}

ボタングループは `QButtonGroup ` クラスを使用して作成でき、ボタンの状態の更新は `QButtonGroup::buttonClicked()` シグナルで監視できます。

注: プロパティchecked に対するNotifier シグナル。

checked およびclicked()も参照してください 。

© 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.