QAbstractButton Class

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

Header: #include <QAbstractButton>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Inherits: QWidget
Inherited By:

QCheckBox, QPushButton, QRadioButton, and 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)

再リンプルメント: (QFocusEvent *event):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)

再実装: (QKeyEvent *event):QWidget::keyReleaseEvent(QKeyEvent *event)。

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

再リンプルメント:QWidget::mouseMoveEvent(QMouseEvent *event)。

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

再リンプルメント: (QMouseEvent *event)QWidget::mousePressEvent(QMouseEvent *event)。

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

再リンプルメント: (QMouseEvent *event)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()も参照してください

本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。