QApplication Class

QApplicationクラスはGUIアプリケーションの制御フローとメイン設定を管理します。詳細...

Header: #include <QApplication>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Inherits: QGuiApplication

プロパティ

パブリック関数

QApplication(int &argc, char **argv)
virtual ~QApplication()
bool autoSipEnabled() const
QString styleSheet() const

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

virtual bool notify(QObject *receiver, QEvent *e) override

パブリックスロット

void aboutQt()
void closeAllWindows()
void setAutoSipEnabled(const bool enabled)
void setStyleSheet(const QString &sheet)

シグナル

void focusChanged(QWidget *old, QWidget *now)

静的パブリックメンバ

QWidget *activeModalWidget()
QWidget *activePopupWidget()
QWidget *activeWindow()
void alert(QWidget *widget, int msec = 0)
QWidgetList allWidgets()
void beep()
int cursorFlashTime()
int doubleClickInterval()
int exec()
QWidget *focusWidget()
QFont font()
QFont font(const QWidget *widget)
QFont font(const char *className)
bool isEffectEnabled(Qt::UIEffect effect)
int keyboardInputInterval()
Qt::NavigationMode navigationMode()
QPalette palette(const QWidget *widget)
QPalette palette(const char *className)
void setCursorFlashTime(int)
void setDoubleClickInterval(int)
void setEffectEnabled(Qt::UIEffect effect, bool enable = true)
void setFont(const QFont &font, const char *className = nullptr)
void setKeyboardInputInterval(int)
void setNavigationMode(Qt::NavigationMode mode)
void setPalette(const QPalette &palette, const char *className = nullptr)
void setStartDragDistance(int l)
void setStartDragTime(int ms)
void setStyle(QStyle *style)
QStyle *setStyle(const QString &style)
void setWheelScrollLines(int)
int startDragDistance()
int startDragTime()
QStyle *style()
QWidget *topLevelAt(const QPoint &point)
QWidget *topLevelAt(int x, int y)
QWidgetList topLevelWidgets()
int wheelScrollLines()
QWidget *widgetAt(const QPoint &point)
QWidget *widgetAt(int x, int y)

再実装された保護された関数

virtual bool event(QEvent *e) override

マクロ

詳細説明

QApplication はQWidget ベースのアプリケーションに必要ないくつかの機能をQGuiApplication に特化しています。QApplication は、ウィジェット固有の初期化と最終化を処理します。

Qt を使用する GUI アプリケーションでは、アプリケーションのウィンドウ数が 0、1、2、またはそれ以上であっても、QApplication オブジェクトは正確に1 つです。QtWidgets ライブラリに依存しないので、QWidget 以外の Qt アプリケーションでは、QGuiApplication を代わりに使用してください。

GUIアプリケーションの中には、特別なバッチモードを提供するものがあります。このような非GUIモードでは、グラフィカル・ユーザー・インターフェースに必要なリソースを不必要に初期化しないように、QCoreApplication 。次の例では、適切なタイプのアプリケーション・インスタンスを動的に作成する方法を示します:

QCoreApplication* createApplication(int &argc, char *argv[])
{
    for (int i = 1; i < argc; ++i) {
        if (!qstrcmp(argv[i], "-no-gui"))
            return new QCoreApplication(argc, argv);
    }
    return new QApplication(argc, argv);
}

int main(int argc, char* argv[])
{
    QScopedPointer<QCoreApplication> app(createApplication(argc, argv));

    if (qobject_cast<QApplication *>(app.data())) {
       // start GUI version...
    } else {
       // start non-GUI version...
    }

    return app->exec();
}

QApplicationオブジェクトは、グローバルなqApp ポインタと等価なポインタを返すinstance ()関数を通してアクセス可能です。

QApplicationの主な役割は以下のとおりです:

  • palette ()、font ()、doubleClickInterval ()のようなユーザーのデスクトップ設定でアプリケーションを初期化します。QApplicationは、ユーザーがデスクトップをグローバルに変更した場合に備えて、これらのプロパティを追跡します。
  • イベント処理を実行します。つまり、基礎となるウィンドウ・システムからイベントを受け取り、関連するウィジェットにディスパッチします。sendEvent() とpostEvent() を使用すると、独自のイベントをウィジェットに送信できます。
  • 一般的なコマンドライン引数を解析し、それに応じて内部状態を設定します。詳細はconstructor documentation を参照してください。
  • アプリケーションのルック&フィールを定義し、QStyle オブジェクトにカプセル化します。これは実行時にsetStyle() で変更できます。
  • translate() を使って、ユーザーに見える文字列のローカライズを行います。
  • clipboard() のような魔法のようなオブジェクトを提供します。
  • アプリケーションのウィンドウについて知っています。widgetAt() を使って特定の位置にあるウィジェットを尋ねたり、topLevelWidgets() やcloseAllWindows() のリストを取得したりできます。
  • アプリケーションのマウスカーソル操作を管理します。setOverrideCursor() を参照してください。

QApplicationオブジェクトは多くの初期化を行うので、ユーザーインターフェースに関連する他のオブジェクトが作成される前に作成されなければなりません。QApplicationは一般的なコマンドライン引数も扱います。従って、アプリケーション自体でargv の解釈や変更が行われる前にQApplicationを作成することは、通常良いアイデアです。

QCoreApplicationQAbstractEventDispatcherQEventLoopQSettingsも参照のこと

プロパティ Documentation

autoSipEnabled : bool

自動SIP(ソフトウェア入力パネル)可視性を切り替える

このプロパティをtrue に設定すると、キーボード入力を受け付けるウィジェットに入力するときに、SIPが自動的に表示されます。このプロパティは、WA_InputMethodEnabled属性が設定されたウィジェットにのみ影響し、通常、キーがほとんどないか、全くないデバイスで仮想キーボードを起動するために使用されます。

このプロパティは、ソフトウェア入力パネルを使用するプラットフォームにのみ影響します。

デフォルトはプラットフォーム依存です。

アクセス関数:

bool autoSipEnabled() const
void setAutoSipEnabled(const bool enabled)

cursorFlashTime : int

このプロパティは、テキストカーソルのフラッシュ(点滅)時間をミリ秒単位で保持します。

点滅時間は、キャレット表示の表示、反転、復元に必要な時間です。通常、テキストカーソルはカーソル点滅時間の半分の時間表示され、その後同じ時間非表示になりますが、異なる場合があります。

X11のデフォルト値は1000ミリ秒である。Windowsでは、Control Panel の値が使用され、このプロパティを設定すると、すべてのアプリケーションのカーソル・フラッシュ時間が設定されます。

ユーザがグローバルデスクトップ設定を変更した場合、この値はいつでも変更される可能性があるため、ウィジェットはこの値をキャッシュしないことをお勧めします。

注意: このプロパティは、カーソル点滅が無効な場合など、負の値を保持することがあります。

アクセス関数:

int cursorFlashTime()
void setCursorFlashTime(int)

doubleClickInterval : int

このプロパティは、ダブルクリックと連続した2回のマウスクリックを区別する制限時間をミリ秒単位で保持する。

X11のデフォルト値は400ミリ秒です。WindowsとMac OSでは、オペレーティングシステムの値が使用されます。

アクセス関数:

int doubleClickInterval()
void setDoubleClickInterval(int)

keyboardInputInterval : int

このプロパティは、キー押下と連続する2回のキー押下を区別する制限時間をミリ秒単位で保持します。

X11のデフォルト値は400ミリ秒です。WindowsとMac OSでは、オペレーティング・システムの値が使用されます。

アクセス関数:

int keyboardInputInterval()
void setKeyboardInputInterval(int)

startDragDistance : int

このプロパティは、ドラッグ&ドロップ操作を開始するために必要な最小距離を保持します。

アプリケーションでドラッグ&ドロップをサポートし、ユーザーがボタンを押したままカーソルを一定距離移動させた後にドラッグ&ドロップ操作を開始したい場合、このプロパティの値を必要最小距離として使用する必要があります。

例えば、クリックしたマウスの位置がstartPos に格納され、現在の位置(マウス移動イベントなど)がcurrentPos の場合、次のようなコードでドラッグを開始すべきかどうかを調べることができます:

if ((startPos - currentPos).manhattanLength() >=
        QApplication::startDragDistance())
    startTheDrag();

Qt はこの値をQFileDialog などで内部的に使用します。

Qt はこの値を内部的に使用します。(プラットフォームが別のデフォルト値を提供していない場合)デフォルト値は 10 ピクセルです。

関数にアクセスしてください:

int startDragDistance()
void setStartDragDistance(int l)

startDragTime(),QPoint::manhattanLength(),Drag and Dropも参照してください

startDragTime : int

このプロパティは、ドラッグ&ドロップ操作を開始するまでにマウスボタンを押し続けなければならない時間をミリ秒単位で保持します。

アプリケーションでドラッグ&ドロップをサポートし、ユーザーがマウスボタンを一定時間押し続けた後にドラッグ&ドロップ操作を開始したい場合、このプロパティの値を遅延として使用する必要があります。

Qt はまた、QTextEditQLineEdit などで、ドラッグを開始するためにこの遅延を内部的に使用します。

デフォルト値は 500 ミリ秒です。

アクセス関数:

int startDragTime()
void setStartDragTime(int ms)

startDragDistance() およびDrag and Dropも参照してください

styleSheet : QString

このプロパティは、アプリケーションスタイルシートを保持します。

デフォルトでは、ユーザがアプリケーションの実行時にコマンドラインで-stylesheet オプションを指定しない限り、このプロパティは空の文字列を返します。

アクセス関数:

QString styleSheet() const
void setStyleSheet(const QString &sheet)

QWidget::setStyle() およびQt Style Sheetsも参照してください

wheelScrollLines : int

このプロパティは、マウスホイールを回転させたときに、ウィジェットをスクロールする行数を保持します。

値がウィジェットの可視行数を超える場合、ウィジェットはスクロール操作を1ページアップまたは1ページダウンとして解釈する必要があります。ウィジェットがitem view class の場合、1スクロールの結果は、ウィジェットのscroll mode の設定に依存する。 1スクロールは、scroll one item またはscroll one pixel を意味する。

デフォルトでは、このプロパティの値は3である。

アクセス関数:

int wheelScrollLines()
void setWheelScrollLines(int)

QStyleHints::wheelScrollLines()も参照のこと

メンバ関数ドキュメント

QApplication::QApplication(int &argc, char **argv)

ウィンドウシステムを初期化し、argc のコマンドライン引数argv でアプリケーションオブジェクトを構築する。

警告: argcargv によって参照されるデータは、QApplication オブジェクトのライフタイム全体にわたって有効でなければなりません。また、argc は 0 より大きく、argv は有効な文字列を少なくとも 1 つ含んでいなければなりません。

グローバルポインタqApp は、このアプリケーションオブジェクトを指します。作成するアプリケーション・オブジェクトは 1 つだけです。

このアプリケーション・オブジェクトは、paint devices (ウィジェット、ピクセルマップ、ビットマップなどを含む)の前に構築されなければなりません。

注意: argcargv は、Qt が認識したコマンドライン引数を削除するため、変更される可能性があります。

すべての Qt プログラムは、以下のコマンドラインオプションを自動的にサポートしています:

  • -アプリケーションの GUI スタイルを設定します。style=style "はアプリケーションの GUI スタイルを設定します。style=style "は、アプリケーションのGUIスタイルを設定します。Qtをコンパイルする際に追加のスタイルを指定した場合や、プラグインとして追加のスタイルを用意した場合は、-style のコマンドラインオプションを使用することができます。QT_STYLE_OVERRIDE 環境変数を設定することで、すべての Qt アプリケーションのスタイルを設定することもできます。
  • -stylestyleは、上記と同じです。
  • -stylesheet=stylesheetは、アプリケーションのstyleSheetを設定します。値は、スタイル・シートを含むファイルへのパスでなければなりません。

    注意: スタイル・シート・ファイルの相対URLは、スタイル・シート・ファイルのパスからの相対パスです。

  • -stylesheetstylesheetは、上記のリストと同じです。
  • -widgetcount, 破壊されずに残ったウィジェットの数と、同時に存在したウィジェットの最大数に関するデバッグ・メッセージを最後に表示します。
  • -reverse、アプリケーションのレイアウト方向をQt::RightToLeft
  • -qmljsdebugger=: QML/JS デバッガをポート指定で起動します。この値はport:1234[,block]の形式でなければなりません。 blockはオプションで、デバッガが接続するまでアプリケーションを待たせます。

QCoreApplication::arguments()も参照してください

[virtual noexcept] QApplication::~QApplication()

このアプリケーションによって割り当てられたウィンドウ・システム・リソースをクリーンアップする。グローバル変数qAppnullptr に設定する。

[static slot] void QApplication::aboutQt()

Qt に関する簡単なメッセージボックスを表示します。メッセージには、アプリケーションで使用されている Qt のバージョン番号が含まれます。

これは、Menus の例で示したように、アプリケーションのHelp メニューに含めるのに便利です。

この関数は、QMessageBox::aboutQt() の便利なスロットです。

[static] QWidget *QApplication::activeModalWidget()

アクティブなモーダルウィジェットを返します。

モーダルウィジェットは、QDialog のサブクラスで、コンストラクタのモーダルパラメータを true に指定する特別なトップレベルウィジェットです。モーダルウィジェットは、ユーザーがプログラムの他の部分を続行する前に閉じなければなりません。

モーダルウィジェットはスタックに整理されます。この関数は、スタックの一番上にあるアクティブなモーダルウィジェットを返します。

activePopupWidget() およびtopLevelWidgets()も参照してください

[static] QWidget *QApplication::activePopupWidget()

アクティブなポップアップ・ウィジェットを返します。

ポップアップ・ウィジェットは、Qt::WType_Popup ウィジェット・フラグを設定する特別なトップレベル・ウィジェットです。例えば、QMenu ウィジェットです。アプリケーションがポップアップ・ウィジェットを開くと、すべてのイベントがポップアップに送られます。通常のウィジェットやモーダルウィジェットは、ポップアップウィジェットが閉じられるまではアクセスできません。

ポップアップ・ウィジェットが表示されているときに開くことができるのは、他のポップアップ・ウィジェットだけです。ポップアップウィジェットはスタックで構成されます。この関数は、スタックの一番上にあるアクティブなポップアップ・ウィジェットを返します。

activeModalWidget() およびtopLevelWidgets()も参照してください

[static] QWidget *QApplication::activeWindow()

キーボード入力にフォーカスがあるアプリケーションのトップレベル・ウィンドウを返し、フォーカスがあるアプリケーション・ウィンドウがない場合はnullptr を返します。focusWidget() が存在しない場合でも activeWindow() が存在する場合があります。例えば、そのウィンドウにキーイベントを受け付けるウィジェットがない場合などです。

QWidget::setFocus ()、QWidget::hasFocus ()、focusWidget)も参照

[static] void QApplication::alert(QWidget *widget, int msec = 0)

ウィンドウがアクティブ・ウィンドウでない場合、widget に対してアラートを表示する。アラートはmsec ミリ秒間表示される。msec がゼロ(デフォルト)の場合、アラートはウィンドウが再びアクティブになるまで無期限に表示されます。

現在のところ、この関数は Qt for Embedded Linux では何もしません。

macOS では、この機能はアプリケーションレベルで動作し、アプリケーションアイコンがドックで跳ね返ります。

Windows では、ウィンドウのタスクバーエントリが一時的に点滅します。msec がゼロの場合、点滅は止まり、タスクバーエントリーの色が変わります(現在はオレンジ)。

X11 では、これはウィンドウを "注意が必要" としてマークする原因となります。これを動作させるには、ウィンドウを非表示 (つまり、hide() が呼び出されず、何らかの方法で表示されている) にしておく必要があります。

[static] QWidgetList QApplication::allWidgets()

アプリケーション内のすべてのウィジェットのリストを返します。

ウィジェットがない場合、リストは空 (QList::isEmpty()) になります。

注意: 一部のウィジェットは非表示になっている可能性があります。

例を示します:

void updateAllWidgets()
{
    const QWidgetList allWidgets = QApplication::allWidgets();
    for (QWidget *widget : allWidgets)
        widget->update();
}

topLevelWidgets() およびQWidget::isVisible()も参照して ください。

[static] void QApplication::beep()

デフォルトの音量とサウンドでベルを鳴らします。この関数は Qt for Embedded Linux では利用できません

[static slot] void QApplication::closeAllWindows()

すべてのトップレベルウィンドウを閉じます。

この関数は、多くのトップレベルウィンドウを持つアプリケーションで特に便利です。

ウィンドウは、1つのウィンドウがcloseイベントを受け付けないまで、ランダムな順番で閉じられます。最後のウィンドウが正常に閉じられると、quitOnLastWindowClosed が false に設定されていない限り、アプリケーションは終了します。メニューなどからアプリケーションの終了をトリガーするには、この関数の代わりにQCoreApplication::quit() を使用してください。

quitOnLastWindowClosedlastWindowClosed()、QWidget::close()、QWidget::closeEvent()、lastWindowClosed()、QCoreApplication::quit()、topLevelWidgets()、QWidget::isWindow()も参照

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

再実装:QGuiApplication::event(QEvent *e)。

[static] int QApplication::exec()

メイン・イベント・ループに入り、exit ()が呼び出されるまで待機し、exit ()に設定された値(quit ()を経由してexit ()が呼び出された場合は0)を返します。

イベント処理を開始するには、この関数を呼び出す必要がある。メイン・イベント・ループはウィンドウ・システムからイベントを受け取り、アプリケーション・ウィジェットにディスパッチします。

一般的に、exec()を呼び出す前にユーザーとのインタラクションを行うことはできません。特殊なケースとして、QMessageBox のようなモーダルウィジェットは exec() を呼び出す前に使用することができます。モーダルウィジェットは exec() を呼び出してローカルイベントループを開始するからです。

アプリケーションにアイドル処理、つまり保留中のイベントがないときに特別な関数を実行させるには、0nsタイムアウトのQChronoTimer 。より高度なアイドル処理スキームは、processEvents ()を使用して実現できます。

クリーンアップ・コードは、アプリケーションのmain() 関数に入れるのではなく、aboutToQuit() シグナルに接続することを推奨します。これは、プラットフォームによっては、QApplication::exec()コールが返らないことがあるからです。例えば、Windows プラットフォームでは、ユーザがログオフすると、Qt がすべてのトップレベルウィンドウを閉じた後、システムがプロセスを終了します。そのため、QApplication::exec() 呼び出しの後、main() 関数の最後で、アプリケーションがイベントループを終了してコードを実行する時間があるという保証はありません。

quitOnLastWindowClosedQCoreApplication::quit()、QCoreApplication::exit()、QCoreApplication::processEvents()、QCoreApplication::exec()も参照してください

[signal] void QApplication::focusChanged(QWidget *old, QWidget *now)

このシグナルは、キーボードフォーカスを持つウィジェットがold からnow に変更されたとき、つまり、ユーザーがタブキーを押したとき、ウィジェットをクリックしたとき、アクティブウィンドウを変更したときに発行されます。oldnow の両方がnullptr になることもある。

このシグナルは、両方のウィジェットがQFocusEvent を通して変更について通知された後に発行されます。

QWidget::setFocus()、QWidget::clearFocus()、Qt::FocusReasonも参照してください

[static] QWidget *QApplication::focusWidget()

キーボード入力にフォーカスを持つアプリケーション・ウィジェット、またはこのアプリケーションにフォーカスを持つウィジェットがない場合はnullptr を返します。

QWidget::setFocus()、QWidget::hasFocus()、activeWindow()、focusChanged()も参照

[static] QFont QApplication::font()

デフォルトのアプリケーション・フォントを返します。

setFont()、fontMetrics()、QWidget::font()も参照して ください。

[static] QFont QApplication::font(const QWidget *widget)

これはオーバーロードされた関数です。

widget のデフォルトフォントを返します。 デフォルトフォントがwidget のクラスに登録されていない場合、最も近い登録済みスーパークラスのデフォルトフォントを返します。

fontMetrics()、setFont()、QWidget::setFont()も参照してください

[static] QFont QApplication::font(const char *className)

これはオーバーロードされた関数です。

与えられたclassName のウィジェットのフォントを返します。

setFont() およびQWidget::font()も参照

[static] bool QApplication::isEffectEnabled(Qt::UIEffect effect)

effect が有効な場合はtrue を返し、そうでない場合はfalse を返します。

デフォルトでは、Qt はデスクトップの設定を使用しようとします。これを防ぐには、setDesktopSettingsAware(false) を呼び出してください。

注意: 16ビット未満の色深度で動作している画面では、すべてのエフェクトが無効になります。

setEffectEnabled() およびQt::UIEffectも参照してください

Qt が使用しているフォーカスナビゲーションの種類を返します。

この機能は Qt for Embedded Linux でのみ利用可能です。

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

[override virtual] bool QApplication::notify(QObject *receiver, QEvent *e)

再実装:QGuiApplication::notify(QObject *object, QEvent *event)。

[static] QPalette QApplication::palette(const QWidget *widget)

widget が渡された場合、ウィジェットのクラスのデフォルトパレットが返されます。これはアプリケーションパレットである場合もあれば、そうでない場合もあります。ほとんどの場合、特定のタイプのウィジェットには特別なパレットはありませんが、1つの顕著な例外は、ユーザがディスプレイ設定でメニューの特別な背景色を定義している場合、Windowsのポップアップメニューです。

setPalette() およびQWidget::palette()も参照して ください。

[static] QPalette QApplication::palette(const char *className)

これはオーバーロードされた関数です。

与えられたclassName のウィジェットのパレットを返します。

setPalette() およびQWidget::palette() も参照

[static] void QApplication::setEffectEnabled(Qt::UIEffect effect, bool enable = true)

enable が true の場合、UI 効果effect を有効にします。そうでない場合、効果は使用されません。

注意: すべてのエフェクトは、16ビット未満の色深度で動作する画面では無効になります。

isEffectEnabled()、Qt::UIEffectsetDesktopSettingsAware()も参照

[static] void QApplication::setFont(const QFont &font, const char *className = nullptr)

デフォルトのアプリケーションフォントをfont に変更します。className が渡された場合、この変更はclassName を継承するクラスにのみ適用されます(QObject::inherits() によって報告されます)。

アプリケーション起動時のデフォルト・フォントはウィンドウ・システムに依存します。これはウィンドウシステムのバージョンとロケールの両方によって変わる可能性があります。この関数を使うと、デフォルトフォントを上書きすることができます。しかし、例えば、特殊文字をサポートするために特別に大きなフォントが必要なロケールもあるので、上書きするのは悪い考えかもしれません。

警告 この関数はQt Style Sheets と組み合わせて使用しないでください。アプリケーションのフォントは、"font" スタイルシートプロパティを使ってカスタマイズすることができます。すべての QPushButton に太字フォントを設定するには、アプリケーションstyleSheet() を "QPushButton { font: bold }" と設定します。

font(),fontMetrics(),QWidget::setFont()も参照してください

[static] void QApplication::setNavigationMode(Qt::NavigationMode mode)

Qt が使用するフォーカスナビゲーションの種類をmode に設定します。

この機能は Qt for Embedded Linux でのみ利用可能です。

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

[static] void QApplication::setPalette(const QPalette &palette, const char *className = nullptr)

アプリケーションパレットをpalette に変更します。

className を渡すと、className を継承するウィジェットにのみ変更が適用されます(QObject::inherits() によって報告されます)。className を 0 のままにすると、変更はすべてのウィジェットに適用され、以前に設定されたクラス固有のパレットが上書きされます。

パレットは、QStyle::polish()の現在のGUIスタイルに応じて変更することができる。

警告 この関数はQtスタイルシートと組み合わせて使用しないでください。スタイルシートを使用する場合、ウィジェットのパレットは、"color"、"background-color"、"selection-color"、"selection-background-color"、"alternate-background-color "を使用してカスタマイズすることができます。

注意: スタイルによっては、すべての描画にパレットを使用しないものもある。Windows VistaやmacOSのスタイルがそうです。

QWidget::setPalette(),palette(),QStyle::polish()も参照のこと

[static] void QApplication::setStyle(QStyle *style)

アプリケーションの GUI スタイルをstyle に設定します。スタイル オブジェクトの所有権はQApplication に移譲されるため、QApplication はアプリケーションの終了時または新しいスタイルが設定され、古いスタイルがまだアプリケーション オブジェクトの親である場合にスタイル オブジェクトを削除します。

使用例:

QApplication::setStyle(QStyleFactory::create("Fusion"));

アプリケーションのスタイルを切り替えると、カラーパレットは初期色またはシステムのデフォルトに設定されます。これは、スタイル ガイドに完全に準拠するために、特定のスタイルでカラー パレットを調整する必要があるためです。

パレットが設定される前、つまりQApplication を作成する前にスタイルを設定すると、アプリケーションはパレットにQStyle::standardPalette() を使用するようになります。

警告 Qt スタイル・シートは現在、QStyle のカスタム・サブクラスには対応していません。将来のリリースで対応する予定です。

style(),QStyle,setPalette(),desktopSettingsAware()も参照してください

[static] QStyle *QApplication::setStyle(const QString &style)

これはオーバーロードされた関数である。

QStyleFactory からstyleQStyle オブジェクトを要求する。

文字列はQStyleFactory::keys() のいずれかでなければならず、通常は "windows"、"windowsvista"、"fusion"、"macos" のいずれかである。スタイル名は大文字小文字を区別しない。

不明なstyle が渡された場合はnullptr を返し、そうでない場合は返されたQStyle オブジェクトがアプリケーションの GUI スタイルとして設定されます。

警告 アプリケーションのスタイルが正しく設定されるようにするには、可能であればQApplication コンストラクタの前にこの関数を呼び出すとよいでしょう。

[static] QStyle *QApplication::style()

アプリケーションのスタイル・オブジェクトを返します。

setStyle() およびQStyleも参照してください

[static] QWidget *QApplication::topLevelAt(const QPoint &point)

指定されたpoint のトップレベル ウィジェットを返します。そのようなウィジェットがない場合はnullptr を返します。

[static] QWidget *QApplication::topLevelAt(int x, int y)

これはオーバーロードされた関数です。

指定された点 (x,y) にあるトップレベル・ウィジェットを返します; そのようなウィジェットがない場合は 0 を返します。

[static] QWidgetList QApplication::topLevelWidgets()

アプリケーションのトップ・レベル・ウィジェット(ウィンドウ)のリストを返します。

注意: トップ・レベル・ウィジェットのいくつかは、例えば、現在ツールチップが表示されていない場合、ツールチップが非表示になる場合があります。

void showAllHiddenTopLevelWidgets()
{
    const QWidgetList topLevelWidgets = QApplication::topLevelWidgets();
    for (QWidget *widget : topLevelWidgets) {
        if (widget->isHidden())
            widget->show();
    }
}

allWidgets(),QWidget::isWindow(),QWidget::isHidden()も参照

[static] QWidget *QApplication::widgetAt(const QPoint &point)

グローバル画面位置point にあるウィジェット、またはそこに Qt ウィジェットがない場合はnullptr を返します。

この関数は遅い場合があります。

QCursor::pos(),QWidget::grabMouse(),QWidget::grabKeyboard()も参照してください

[static] QWidget *QApplication::widgetAt(int x, int y)

これはオーバーロードされた関数です。

グローバル画面位置 (x,y) にあるウィジェット、またはそこに Qt ウィジェットがない場合はnullptr を返します。

マクロ・ドキュメント

qApp

固有のアプリケーション・オブジェクトを参照するグローバル・ポインタ。QCoreApplication::instance() と同等ですが、QApplication ポインタとしてキャストされるため、一意のアプリケーション・オブジェクトがQApplication の場合にのみ有効です。

QCoreApplication::instance() およびqGuiAppも参照してください

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