このページでは

QPushButton Class

QPushButton ウィジェットは、コマンドボタンを提供します。詳細...

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

QCommandLinkButton

プロパティ

パブリック関数

QPushButton(QWidget *parent = nullptr)
QPushButton(const QString &text, QWidget *parent = nullptr)
QPushButton(const QIcon &icon, const QString &text, QWidget *parent = nullptr)
virtual ~QPushButton()
bool autoDefault() const
bool isDefault() const
bool isFlat() const
QMenu *menu() const
void setAutoDefault(bool)
void setDefault(bool)
void setFlat(bool)
void setMenu(QMenu *menu)

再実装されたパブリック関数

virtual QSize minimumSizeHint() const override
virtual QSize sizeHint() const override

パブリック・スロット

void showMenu()

プロテクトされた関数

virtual void initStyleOption(QStyleOptionButton *option) const

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

virtual bool event(QEvent *e) override
virtual void focusInEvent(QFocusEvent *e) override
virtual void focusOutEvent(QFocusEvent *e) override
virtual bool hitButton(const QPoint &pos) const override
virtual void keyPressEvent(QKeyEvent *e) override
virtual void mouseMoveEvent(QMouseEvent *e) override
virtual void paintEvent(QPaintEvent *) override

詳細な説明

新しいドキュメントを作成するためのボタン

プッシュボタン、あるいはコマンドボタンは、おそらくどのグラフィカルユーザーインターフェースにおいても最も一般的に使用されるウィジェットです。ボタンを押す(クリックする)ことで、コンピュータに何らかのアクションを実行させたり、質問に答えさせたりします。代表的なボタンには、「OK」、「適用」、「キャンセル」、「閉じる」、「はい」、「いいえ」、「ヘルプ」などがあります。

コマンドボタンは長方形で、通常はその動作を説明するテキストラベルが表示されます。テキスト内の指定したい文字の前にアンパサンドを付けることで、ショートカットキーを指定できます。例:

QPushButton *button = new QPushButton("&Download", this);

この例では、ショートカットはAlt+Dとなります。詳細については、QShortcut のドキュメントを参照してください(実際のアンパサンドを表示するには、「&&」を使用してください)。

プッシュボタンにはテキストラベルが表示され、必要に応じて小さなアイコンも表示されます。これらはコンストラクタを使用して設定でき、後で `setText()` および `setIcon()` を使用して変更できます。ボタンが無効化されている場合、テキストとアイコンの外観は GUI スタイルに基づいて調整され、ボタンが「無効」に見えるようになります。

プッシュボタンは、マウス、スペースキー、またはキーボードショートカットによってアクティブ化されると、clicked() シグナルを発行します。このシグナルに接続して、ボタンのアクションを実行してください。プッシュボタンは、pressed() やreleased() など、あまり一般的に使用されないシグナルも提供します。

connect(dispenseButton, &QPushButton::clicked, this, &IceCreamMaker::dispense);

ダイアログ内のコマンドボタンは、デフォルトで「自動デフォルトボタン」となっています。つまり、キーボード入力のフォーカスを受けると、自動的にデフォルトのプッシュボタンになります。 デフォルトボタンとは、ユーザーがダイアログ内でEnterキーまたはReturnキーを押したときにアクティブになるプッシュボタンのことです。これはsetAutoDefault()で変更できます。自動デフォルトボタンは、デフォルトボタンインジケータを描画するために必要なわずかな余分なスペースを確保している点に注意してください。ボタンの周囲にこのスペースを必要としない場合は、setAutoDefault(false)を呼び出してください。

ボタンウィジェットは極めて重要な役割を担っているため、過去10年間で非常に多くのバリエーションに対応するよう発展してきました。Microsoftのスタイルガイドには現在、Windowsのプッシュボタンの約10種類の状態が掲載されていますが、機能のすべての組み合わせを考慮すると、実際にはさらに数十種類存在すると示唆されています。

最も重要なモードまたは状態は以下の通りです:

  • 利用可能か否か(グレー表示、無効)。
  • 標準のプッシュボタン、トグル式プッシュボタン、またはメニューボタン。
  • オンまたはオフ(トグル式プッシュボタンのみ)。
  • デフォルトまたは通常。ダイアログ内のデフォルトボタンは、通常、Enter キーまたは Return キーを使用して「クリック」できます。
  • 自動リピートか否か。
  • 押されているか、押されていないか。

原則として、アプリケーションやダイアログウィンドウが、ユーザーがボタンをクリックしたときにアクションを実行する場合([適用]、[キャンセル]、[閉じる]、[ヘルプ] など)、およびウィジェットがテキストラベル付きの幅広の長方形の形状であるべき場合には、プッシュボタンを使用します。 アクションを実行するのではなく、ウィンドウの状態を変更する、通常は正方形の小さなボタン(QFileDialog の右上隅にあるボタンなど)は、コマンドボタンではなくツールボタンです。Qt では、これらのボタン用に特別なクラス(QToolButton )が用意されています。

トグル動作(setCheckable() を参照)が必要な場合や、スクロールバーの矢印のように押下時にアクティベーション信号を自動的に繰り返し送信するボタン(setAutoRepeat() を参照)が必要な場合は、コマンドボタンはおそらく適していません。迷った場合は、ツールボタンを使用してください。

注: macOSでは 、プッシュボタンの幅が 50 未満、または高さが 30 未満になると、ボタンの角が丸から角張った形に変わります。この動作を防ぐには、setMinimumSize() 関数を使用してください。

コマンドボタンのバリエーションとして、メニューボタンがあります。これらは、クリックするとオプションのメニューがポップアップ表示されるため、1つのコマンドだけでなく複数のコマンドを提供します。ポップアップメニューをプッシュボタンに関連付けるには、setMenu() メソッドを使用してください。

その他のボタンの種類としては、オプションボタン(QRadioButton を参照)やチェックボックス(QCheckBox を参照)があります。

Qt では、基底クラス `QAbstractButton ` がモードやその他の API の大部分を提供し、`QPushButton` が GUI ロジックを提供します。API に関する詳細については、QAbstractButton を参照してください。

QToolButton 、QRadioButton 、およびQCheckBoxも参照してください 。

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

autoDefault : bool

このプロパティは、プッシュボタンが自動デフォルトボタンであるかどうかを示します

このプロパティが true に設定されている場合、そのプッシュボタンは自動デフォルトボタンとなります。

一部のGUIスタイルでは、デフォルトボタンは周囲に最大3ピクセル以上の余白を持つ枠で描画されます。Qt GUIは、自動デフォルトボタンの周囲にこの余白を自動的に確保します。つまり、自動デフォルトボタンのサイズヒントはわずかに大きくなる場合があります。

このプロパティのデフォルト値は、QDialog を持つボタンについては true ですが、それ以外の場合は false になります。

default とauto-defaultの相互作用の詳細については、default プロパティを参照してください。

アクセス関数:

bool autoDefault() const
void setAutoDefault(bool)

default : bool

このプロパティは、そのプッシュボタンがデフォルトボタンであるかどうかを指定します

デフォルトボタンと自動デフォルトボタンは、ユーザーがダイアログでEnterキーを押した際の動作を決定します。

このプロパティが true に設定されているボタン(つまり、ダイアログのデフォルトボタン)は、ユーザーが Enter キーを押すと自動的に押されます。ただし、autoDefault ボタンが現在フォーカスを持っている場合は、autoDefault ボタンが押されます。 ダイアログにautoDefault ボタンがあり、デフォルトボタンがない場合、Enterキーを押すと、現在フォーカスを持っているautoDefault ボタンが押されるか、どのボタンもフォーカスを持っていない場合は、フォーカスチェーン上の次のautoDefault ボタンが押されます。

ダイアログでは、一度に1つのプッシュボタンのみがデフォルトボタンになることができます。このボタンには、(GUIスタイルに応じて)追加の枠で囲まれて表示されます。

デフォルトボタンの動作は、ダイアログ内でのみ提供されます。ボタンにフォーカスがある場合、スペースバーを押すことで、いつでもキーボードからそのボタンをクリックすることができます。

ダイアログが表示されている間に、現在のデフォルトボタンの default プロパティが false に設定されると、ダイアログ内のプッシュボタンが次にフォーカスを受けた際に、自動的に新しいデフォルトが割り当てられます。

このプロパティのデフォルト値は false です。

アクセス関数:

bool isDefault() const
void setDefault(bool)

flat : bool

このプロパティは、ボタンの境界線が盛り上がり表示されるかどうかを指定します

このプロパティのデフォルト値は false です。このプロパティが設定されている場合、ボタンが押されているとき以外は、ほとんどのスタイルではボタンの背景が描画されません。setAutoFillBackground() を使用すると、QPalette::Button ブラシを使用して背景を確実に塗りつぶすことができます。

アクセス関数:

bool isFlat() const
void setFlat(bool)

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

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

テキストがなく、parent が設定されたプッシュボタンを生成します。

[explicit] QPushButton::QPushButton(const QString &text, QWidget *parent = nullptr)

親要素としてparent 、テキストとしてtext を持つプッシュボタンを生成します。

QPushButton::QPushButton(const QIcon &icon, const QString &text, QWidget *parent = nullptr)

icon 、text 、およびparent を持つプッシュボタンを生成します。

なお、(C++が提供する暗黙の型変換のおかげで)QPixmap オブジェクトをアイコンとして渡すことも可能です。

[virtual noexcept] QPushButton::~QPushButton()

押しボタンを破壊する。

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

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

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

QAbstractButton::focusInEvent(QFocusEvent *e) を再実装しています。

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

QAbstractButton::focusOutEvent(QFocusEvent *e) を再実装します。

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

QAbstractButton::hitButton (const QPoint &pos)const を再実装します。

[virtual protected] void QPushButton::initStyleOption(QStyleOptionButton *option) const

option を、QPushButton に記載されている値で初期化します。このメソッドは、サブクラスがQStyleOptionButton を必要とするものの、すべての情報を自分で入力したくない場合に役立ちます。

QStyleOption::initFrom()も参照してください 。

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

QAbstractButton::keyPressEvent(QKeyEvent *e) を再実装します。

ボタンに関連付けられたポップアップメニューを返します。ポップアップメニューが設定されていない場合は、nullptr を返します。

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

[override virtual] QSize QPushButton::minimumSizeHint() const

プロパティ「QWidget::minimumSizeHint 」のアクセス関数を再実装します。

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

QAbstractButton::mouseMoveEvent(QMouseEvent *e) の再実装です。

[override virtual protected] void QPushButton::paintEvent(QPaintEvent *)

QAbstractButton::paintEvent(QPaintEvent *e) を再実装します。

void QPushButton::setMenu(QMenu *menu)

ポップアップメニュー「menu 」をこのプッシュボタンに関連付けます。これにより、ボタンはメニューボタンとなり、スタイルによってはボタンのテキストの右側に小さな三角マークが表示されます。

メニューの所有権はプッシュボタンに移管されません。

ポップアップメニュー付きのボタン

Fusion ウィジェットスタイルで表示された、ポップアップメニュー付きのプッシュボタン。

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

[slot] void QPushButton::showMenu()

関連するポップアップメニューを表示します。そのようなメニューが存在しない場合、この関数は何も行いません。この関数は、ユーザーがポップアップメニューを閉じるまで戻りません。

[override virtual] QSize QPushButton::sizeHint() const

プロパティ「QWidget::sizeHint 」のアクセス関数を再実装します。

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