QAbstractButton Class
QAbstractButtonクラスはボタンウィジェットの抽象ベースクラスで、ボタンに共通する機能を提供します。詳細...
ヘッダー | #include <QAbstractButton> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
qmake: | QT += widgets |
を継承する: | QWidget |
によって継承される: |
プロパティ
|
パブリック機能
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() |
シグナル
保護された関数
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つのシグナルを提供します:
- pressed() は、マウスカーソルがボタンの内側にあるときにマウスの左ボタンが押されたときに発せられます。
- released() はマウスの左ボタンが離されたときに発せられます。
- clicked() は、ボタンが最初に押されてから離されたとき、ショートカット・キーが入力されたとき、click() またはanimateClick() が呼び出されたときに発せられます。
- 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 はオフである。初期遅延と繰り返し間隔は、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) |
ノーティファイアシグナル:
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 プロパティに対するノーティファイア・シグナル。
© 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.