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、Apply、Cancel、Close、Yes、No、Helpです。

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

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

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

プッシュボタンにはテキストラベルと、オプションで小さなアイコンが表示されます。これらはコンストラクタで設定でき、setText() やsetIcon() を使って後で変更できる。ボタンが無効の場合、テキストとアイコンの外観はGUIスタイルに応じて操作され、ボタンが「無効」に見えるようになります。

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

ダイアログのコマンドボタンは、デフォルトでは自動デフォルトボタンになっています。デフォルトボタンは、ユーザーがダイアログでEnterキーやReturnキーを押したときに有効になるプッシュボタンです。これはsetAutoDefault() で変更できます。自動デフォルト・ボタンは、デフォルト・ボタン・インジケータを描画するために必要な余分なスペースを確保していることに注意してください。ボタンの周りにこのスペースが必要ない場合は、setAutoDefault(false)を呼び出してください。

このように中心的な存在であるボタンウィジェットは、過去10年間に非常に多くのバリエーションに対応できるように成長しました。マイクロソフトのスタイルガイドでは、Windowsのプッシュボタンの状態を10種類ほど示しており、すべての機能の組み合わせを考慮すると、さらに何十種類もあることを示唆している。

最も重要なモードや状態は以下の通りである:

  • 利用可能かどうか(グレーアウト、無効)。
  • 標準プッシュボタン、トグリングプッシュボタン、メニューボタン。
  • オンかオフか(トグル・プッシュボタンの場合のみ)。
  • デフォルトか通常か。ダイアログのデフォルトボタンは通常、EnterキーまたはReturnキーで「クリック」できます。
  • オートリピートするかしないか。
  • 押し下げられるかどうか。

一般的なルールとして、ユーザーがクリックするとアプリケーションやダイアログウィンドウがアクションを実行する場合(Apply、Cancel、Close、Helpなど)、およびウィジェットがテキストラベルを持つ幅の広い長方形の形状を持つことになっている場合は、プッシュボタンを使用します。アクションを実行するのではなく、ウィンドウの状態を変更する小さな、通常は正方形のボタン(QFileDialog の右上のボタンなど)は、コマンドボタンではなく、ツールボタンです。Qtはこれらのボタン用に特別なクラス(QToolButton)を用意しています。

トグル動作(setCheckable() を参照)や、スクロールバーの矢印のように押下されると起動信号を自動で繰り返すボタン(setAutoRepeat() を参照)が必要な場合、コマンドボタンはおそらく必要ありません。迷ったらツールボタンを使いましょう。

注意: macOSでは、プッシュボタンの幅が50より小さくなるか、高さが30より小さくなると、ボタンの角が丸から四角に変更されます。この動作を防ぐには、setMinimumSize ()関数を使用してください。

コマンドボタンのバリエーションとして、メニューボタンがあります。クリックするとオプションのメニューがポップアップするので、1つのコマンドだけでなく複数のコマンドを実行できます。ポップアップ・メニューをプッシュ・ボタンに関連付けるには、setMenu ()メソッドを使います。

ボタンの他のクラスには、オプション・ボタン(QRadioButton を参照)とチェック・ボックス(QCheckBox を参照)があります。

Qtでは、QAbstractButton 基本クラスがモードやその他のAPIのほとんどを提供し、QPushButtonがGUIロジックを提供します。APIについてはQAbstractButton を参照してください。

QToolButtonQRadioButtonQCheckBoxも参照して ください。

プロパティ・ドキュメンテーション

autoDefault : bool

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

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

いくつかのGUIスタイルでは、デフォルトボタンはその周囲に3ピクセル以上の余分なフレームで描画されます。Qtは、自動デフォルト・ボタンの周りにこの余分なスペースを自動的に確保します。

このプロパティのデフォルトは、QDialog の親を持つボタンの場合は true、そうでない場合は false です。

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

アクセス関数:

bool autoDefault() const
void setAutoDefault(bool)

default : bool

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

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

このプロパティがtrueに設定されたボタン(すなわち、ダイアログのデフォルトボタン)は、ユーザがEnterを押すと自動的に押されます。ただし、1つの例外があります。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)

icontext 、およびparent を持つプッシュ・ボタンを構築します。

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

[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

QPushButton の値でoption を初期化する。このメソッドは、サブクラスが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スタイルのプッシュボタンのスクリーンショット。

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

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

[slot] void QPushButton::showMenu()

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

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

QWidget::sizeHint

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