QPushButton Class

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

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

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)

icontextparent を持つプッシュ・ボタンを構築します。

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)

再リンプルメント: (QFocusEvent *e)QAbstractButton::focusOutEvent(QFocusEvent *e).

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

再リンプルメント: (QFocusEvent *e):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 をこのプッシュボタンに関連付けます。これはボタンをメニューボタンに変え、いくつかのスタイルではボタンのテキストの右側に小さな三角形を表示します。

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

Screenshot of a Fusion style push button with popup menu.

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

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

[slot] void QPushButton::showMenu()

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

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

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

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