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)

保護された関数

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は、プッシュ・ボタンとチェック可能(トグル)ボタンの両方をサポートしています。チェック可能ボタンは、QRadioButtonQCheckBox クラスで実装されています。プッシュ・ボタンは、QPushButtonQToolButton クラスに実装されています。これらは、必要に応じてトグル動作も提供します。

どのボタンも、テキストとアイコンを含むラベルを表示できます。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) は、texticons の両方を表示することができます。

ボタンは、QPushButton::setDefault() とQPushButton::setAutoDefault() によって、ダイアログのデフォルト・ボタンにすることができます。

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

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

    注意: 他のウィジェットとは対照的に、QAbstractButtonから派生したボタンは、無効化されてもマウスイベントやコンテキストメニューイベントを受け付ける。

  • setAutoRepeat(autoRepeatDelayautoRepeatInterval は、自動繰り返しがどのように行われるかを定義します。
  • setCheckable() はボタンがトグルボタンかどうかを設定します。

isDown() とisChecked() の違いは以下の通りです。ユーザーがトグル・ボタンをクリックしてチェックすると、ボタンはまず押されチェックされた状態になります。ユーザーがもう一度クリックすると(チェックを外すと)、ボタンはまず押された状態になり、次にチェックされていない状態になります(isChecked ()とisDown ()は両方ともfalseです)。

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

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

QAbstractButtonをサブクラス化するには、ボタンのアウトラインとテキストまたはpixmapを描画するために、少なくともpaintEvent ()を再実装する必要があります。一般的には、sizeHint ()を再実装することをお勧めします。また、hitButton (ボタンが押されたかどうかを判断する)を再実装することもあります。2つ以上のステートを持つボタン(トライステート・ボタンなど)の場合は、checkStateSet ()とnextCheckState ()も再実装する必要があります。

QButtonGroupも参照してください

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

autoExclusive : bool

このプロパティは、自動排他性が有効かどうかを保持する。

自動排他性が有効な場合、同じ親ウィジェットに属するチェック可能なボタンは、同じ排他的ボタングループに属しているかのように振る舞います。排他的ボタングループでは、常に1つのボタンだけをチェックすることができます。

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

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

アクセス関数:

bool autoExclusive() const
void setAutoExclusive(bool)

QRadioButtonも参照してください

autoRepeat : bool

このプロパティは、autoRepeat が有効かどうかを保持する。

autoRepeat が有効な場合、ボタンが押下されると、pressed ()、released ()、clicked ()の各信号が一定間隔で発信される。デフォルトでは autoRepeat はオフである。初期遅延と繰り返し間隔は、autoRepeatDelayautoRepeatInterval によってミリ秒単位で定義されます。

注意: ボタンがショートカット・キーによって押下された場合、自動リピートはこのクラスではなく、システムによって有効化され、時間が設定されます。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)

ノーティファイアシグナル:

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()

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

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

[slot] void QAbstractButton::click()

クリックを実行する。

クリックに関連するすべての通常のシグナルが適切に発せられる。ボタンがチェック可能な場合は、ボタンの状態がトグルされる。

ボタンがdisabled.

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

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

このシグナルは、ボタンがアクティブ化されたとき(つまり、マウスカーソルがボタンの内側にあるときに押し下げられた後に離されたとき)、ショートカットキーが入力されたとき、またはclick() やanimateClick() が呼び出されたときに発せられる。特に、setDown ()、setChecked ()、toggle ()を呼び出した場合は、このシグナルは出力されません

ボタンがチェック可能な場合、checked は、ボタンがチェックされていれば真、チェックされていなければ偽となります。

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 プロパティに対するノーティファイア・シグナル。

checkedclicked()も参照してください

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