このページでは

QWidget Class

QWidget クラスは、すべてのユーザーインターフェースオブジェクトの基底クラスです。詳細...

パブリック型

enum RenderFlag { DrawWindowBackground, DrawChildren, IgnoreMask }
flags RenderFlags

プロパティ

パブリック関数

QWidget(QWidget*parent= nullptr, Qt::WindowFlagsf= Qt::WindowFlags())
仮想 ~QWidget()
bool acceptDrops() const
QString accessibleDescription() const
QString accessibleIdentifier() const
QString accessibleName() const
QList<QAction *> actions() const
void activateWindow()
void addAction(QAction*action)
(since 6.3) QAction *addAction(const QString&text)
(since 6.3) QAction *addAction(const QIcon&icon, const QString&text)
(since 6.3) QAction *addAction(const QString&text, const QKeySequence&shortcut)
(since 6.3) QAction *addAction(const QIcon&icon, const QString&text, const QKeySequence&shortcut)
(since 6.3) QAction *addAction(const QString&text, Args &&...args)
(since 6.3) QAction *addAction(const QIcon&icon, const QString&text, Args &&...args)
(since 6.3) QAction *addAction(const QString&text, const QKeySequence&shortcut, Args &&...args)
(since 6.3) QAction *addAction(const QIcon&icon, const QString&text, const QKeySequence&shortcut, Args &&...args)
(since 6.3) QAction *addAction(const QString&text, const QObject*receiver, const char*member, Qt::ConnectionTypetype= Qt::AutoConnection)
(since 6.3) QAction *addAction(const QIcon&icon, const QString&text, const QObject*receiver, const char*member, Qt::ConnectionTypetype= Qt::AutoConnection)
(since 6.3) QAction *addAction(const QString&text, const QKeySequence&shortcut, const QObject*receiver, const char*member, Qt::ConnectionTypetype= Qt::AutoConnection)
(since 6.3) QAction *addAction(const QIcon&icon, const QString&text, const QKeySequence&shortcut, const QObject*receiver, const char*member, Qt::ConnectionTypetype= Qt::AutoConnection)
void addActions(const QList<QAction *>&actions)
void adjustSize()
bool autoFillBackground() const
QPalette::ColorRole backgroundRole() const
QBackingStore *backingStore() const
QSize baseSize() const
QWidget *childAt(intx, inty) const
QWidget *childAt(const QPoint&p) const
(since 6.8) QWidget *childAt(const QPointF&p) const
QRect childrenRect() const
QRegion childrenRegion() const
void clearFocus()
void clearMask()
QMargins contentsMargins() const
QRect contentsRect() const
Qt::ContextMenuPolicy contextMenuPolicy() const
QCursor cursor() const
WId effectiveWinId() const
void ensurePolished() const
Qt::FocusPolicy focusPolicy() const
QWidget *focusProxy() const
QWidget *() constfocusWidget() const
const QFont &font() const
QFontInfo fontInfo() const
QFontMetrics fontMetrics() const
QPalette::ColorRole foregroundRole() const
QRect frameGeometry() const
QSize frameSize() const
const QRect &geometry() const
QPixmap grab(const QRect&rectangle= QRect(QPoint(0, 0), QSize(-1, -1)))
void grabGesture(Qt::GestureTypegesture, Qt::GestureFlagsflags= Qt::GestureFlags())
void grabKeyboard()
void grabMouse()
void grabMouse(const QCursor&cursor)
int grabShortcut(const QKeySequence&key, Qt::ShortcutContextcontext= Qt::WindowShortcut)
QGraphicsEffect *graphicsEffect() const
QGraphicsProxyWidget *graphicsProxyWidget() const
bool hasFocus() const
仮想 bool hasHeightForWidth() const
bool hasMouseTracking() const
bool hasTabletTracking() const
int height() const
仮想 int heightForWidth(intw) const
Qt::InputMethodHints inputMethodHints() const
仮想 QVariant inputMethodQuery(Qt::InputMethodQueryquery) const
void insertAction(QAction*before, QAction*action)
void insertActions(QAction*before, const QList<QAction *>&actions)
bool isActiveWindow() const
bool isAncestorOf(const QWidget*child) const
bool isEnabled() const
bool isEnabledTo(const QWidget*ancestor) const
bool isFullScreen() const
bool isHidden() const
bool isMaximized() const
bool isMinimized() const
bool isModal() const
bool isVisible() const
bool isVisibleTo(const QWidget*ancestor) const
bool isWindow() const
bool isWindowModified() const
QLayout *layout() const
Qt::LayoutDirection layoutDirection() const
QLocale locale() const
(since 6.0) QPointF mapFrom(const QWidget*parent, const QPointF&pos) const
QPoint mapFrom(const QWidget*parent, const QPoint&pos) const
(since 6.0) QPointF mapFromGlobal(const QPointF&pos) const
QPoint mapFromGlobal(const QPoint&pos) const
(since 6.0) QPointF mapFromParent(const QPointF&pos) const
QPoint mapFromParent(const QPoint&pos) const
(since 6.0) QPointF mapTo(const QWidget*parent, const QPointF&pos) const
QPoint mapTo(const QWidget*parent, const QPoint&pos) const
(since 6.0) QPointF mapToGlobal(const QPointF&pos) const
QPoint mapToGlobal(const QPoint&pos) const
(since 6.0) QPointF mapToParent(const QPointF&pos) const
QPoint mapToParent(const QPoint&pos) const
QRegion mask() const
int maximumHeight() const
QSize maximumSize() const
int maximumWidth() const
int minimumHeight() const
QSize minimumSize() const
仮想 QSize minimumSizeHint() const
int minimumWidth() const
void move(intx, inty)
void move(const QPoint &)
QWidget *nativeParentWidget() const
QWidget *nextInFocusChain() const
QRect normalGeometry() const
void overrideWindowFlags(Qt::WindowFlagsフラグ)
const QPalette &palette() const
QWidget *parentWidget() const
QPoint pos() const
QWidget *previousInFocusChain() const
QRect rect() const
void releaseKeyboard()
void releaseMouse()
void releaseShortcut(intid)
void removeAction(QAction*action)
void render(QPaintDevice*target, const QPoint&targetOffset= QPoint(), const QRegion&sourceRegion= QRegion(), QWidget::RenderFlagsrenderFlags= RenderFlags(DrawWindowBackground | DrawChildren))
void render(QPainter*painter, const QPoint&targetOffset= QPoint(), const QRegion&sourceRegion= QRegion(), QWidget::RenderFlagsrenderFlags= RenderFlags(DrawWindowBackground | DrawChildren))
void repaint(const QRect&rect)
void repaint(const QRegion&rgn)
void repaint(intx, inty, intw, inth)
void resize(intw, inth)
void resize(const QSize &)
bool restoreGeometry(const QByteArray&geometry)
QByteArray saveGeometry() const
QScreen *screen() const
void scroll(intdx, intdy)
void scroll(intdx, intdy, const QRect&r)
void setAcceptDrops(boolon)
void setAccessibleDescription(const QString&description)
void setAccessibleIdentifier(const QString&identifier)
void setAccessibleName(const QString&name)
void setAttribute(Qt::WidgetAttribute属性, boolon= true)
void setAutoFillBackground(boolenabled)
void setBackgroundRole(QPalette::ColorRolerole)
void setBaseSize(const QSize &)
void setBaseSize(intbasew, intbaseh)
void setContentsMargins(intleft, inttop, intright, intbottom)
void setContentsMargins(const QMargins&margins)
void setContextMenuPolicy(Qt::ContextMenuPolicypolicy)
void setCursor(const QCursor &)
void setFixedHeight(inth)
void setFixedSize(const QSize&s)
void setFixedSize(intw, inth)
void setFixedWidth(intw)
void setFocus(Qt::FocusReasonreason)
void setFocusPolicy(Qt::FocusPolicypolicy)
void setFocusProxy(QWidget*w)
void setFont(const QFont &)
void setForegroundRole(QPalette::ColorRolerole)
void setGeometry(intx, inty, intw, inth)
void setGeometry(const QRect &)
void setGraphicsEffect(QGraphicsEffect*effect)
void setInputMethodHints(Qt::InputMethodHintshints)
void setLayout(QLayout*layout)
void setLayoutDirection(Qt::LayoutDirectiondirection)
void setLocale(const QLocale&locale)
void setMask(const QBitmap&bitmap)
void setMask(const QRegion&region)
void setMaximumHeight(intmaxh)
void setMaximumSize(const QSize &)
void setMaximumSize(intmaxw, intmaxh)
void setMaximumWidth(intmaxw)
void setMinimumHeight(intminh)
void setMinimumSize(const QSize &)
void setMinimumSize(intminw, intminh)
void setMinimumWidth(intminw)
void setMouseTracking(boolenable)
void setPalette(const QPalette &)
void setParent(QWidget*parent)
void setParent(QWidget*parent, Qt::WindowFlagsf)
void setScreen(QScreen*screen)
void setShortcutAutoRepeat(intid, boolenable= true)
void setShortcutEnabled(intid, boolenable= true)
void setSizeIncrement(const QSize &)
void setSizeIncrement(intw, inth)
void setSizePolicy(QSizePolicy)
void setSizePolicy(QSizePolicy::Policyhorizontal, QSizePolicy::Policyvertical)
void setStatusTip(const QString &)
void setStyle(QStyle*style)
void setTabletTracking(boolenable)
void setToolTip(const QString &)
void setToolTipDuration(intmsec)
void setUpdatesEnabled(boolenable)
void setWhatsThis(const QString &)
void setWindowFilePath(const QString&filePath)
void setWindowFlag(Qt::WindowTypeflag, boolon= true)
void setWindowFlags(Qt::WindowFlagstype)
void setWindowIcon(const QIcon&icon)
void setWindowModality(Qt::WindowModalitywindowModality)
void setWindowOpacity(qreallevel)
void setWindowRole(const QString&role)
void setWindowState(Qt::WindowStatesウィンドウ状態)
void setupUi(QWidget*widget)
QSize size() const
仮想 QSize sizeHint() const
QSize sizeIncrement() const
QSizePolicy sizePolicy() const
void stackUnder(QWidget*w)
QString statusTip() const
QStyle *style() const
QString styleSheet() const
bool testAttribute(Qt::WidgetAttributeattribute) const
QString toolTip() const
int toolTipDuration() const
bool underMouse() const
void ungrabGesture(Qt::GestureTypegesture)
void unsetCursor()
void unsetLayoutDirection()
void unsetLocale()
void update(const QRect&rect)
void update(const QRegion&rgn)
void update(intx, inty, intw, inth)
void updateGeometry()
bool updatesEnabled() const
QRegion visibleRegion() const
QString whatsThis() const
int width() const
WId winId() const
QWidget *window() const
QString windowFilePath() const
Qt::WindowFlags windowFlags() const
QWindow *windowHandle() const
QIcon windowIcon() const
Qt::WindowModality windowModality() const
qreal windowOpacity() const
QString windowRole() const
Qt::WindowStates windowState() const
QString windowTitle() const
Qt::WindowType windowType() const
int x() const
int y() const

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

virtual QPaintEngine *paintEngine() const override

パブリック・スロット

bool close()
void hide()
void lower()
void raise()
void repaint()
void setDisabled(bool disable)
void setEnabled(bool)
void setFocus()
void setHidden(bool hidden)
void setStyleSheet(const QString &styleSheet)
virtual void setVisible(bool visible)
void setWindowModified(bool)
void setWindowTitle(const QString &)
void show()
void showFullScreen()
void showMaximized()
void showMinimized()
void showNormal()
void update()

シグナル

void customContextMenuRequested(const QPoint &pos)
void windowIconChanged(const QIcon &icon)
void windowTitleChanged(const QString &title)

静的パブリックメンバー

QWidget *createWindowContainer(QWindow *window, QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())
QWidget *find(WId id)
QWidget *keyboardGrabber()
QWidget *mouseGrabber()
void setTabOrder(QWidget *first, QWidget *second)
(since 6.6) void setTabOrder(std::initializer_list<QWidget *> widgets)

保護された関数

virtual void actionEvent(QActionEvent *event)
virtual void changeEvent(QEvent *event)
virtual void closeEvent(QCloseEvent *event)
virtual void contextMenuEvent(QContextMenuEvent *event)
void create(WId window = 0, bool initializeWindow = true, bool destroyOldWindow = true)
void destroy(bool destroyWindow = true, bool destroySubWindows = true)
virtual void dragEnterEvent(QDragEnterEvent *event)
virtual void dragLeaveEvent(QDragLeaveEvent *event)
virtual void dragMoveEvent(QDragMoveEvent *event)
virtual void dropEvent(QDropEvent *event)
virtual void enterEvent(QEnterEvent *event)
virtual void focusInEvent(QFocusEvent *event)
bool focusNextChild()
virtual bool focusNextPrevChild(bool next)
virtual void focusOutEvent(QFocusEvent *event)
bool focusPreviousChild()
virtual void hideEvent(QHideEvent *event)
virtual void inputMethodEvent(QInputMethodEvent *event)
virtual void keyPressEvent(QKeyEvent *event)
virtual void keyReleaseEvent(QKeyEvent *event)
virtual void leaveEvent(QEvent *event)
virtual void mouseDoubleClickEvent(QMouseEvent *event)
virtual void mouseMoveEvent(QMouseEvent *event)
virtual void mousePressEvent(QMouseEvent *event)
virtual void mouseReleaseEvent(QMouseEvent *event)
virtual void moveEvent(QMoveEvent *event)
virtual bool nativeEvent(const QByteArray &eventType, void *message, qintptr *result)
virtual void paintEvent(QPaintEvent *event)
virtual void resizeEvent(QResizeEvent *event)
virtual void showEvent(QShowEvent *event)
virtual void tabletEvent(QTabletEvent *event)
virtual void wheelEvent(QWheelEvent *event)

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

virtual bool event(QEvent*event) override
virtual void initPainter(QPainter*painter) const override
仮想 int metric(QPaintDevice::PaintDeviceMetricm) const override

保護されたスロット

void updateMicroFocus(Qt::InputMethodQuery query = Qt::ImQueryAll)

マクロ

詳細な説明

ウィジェットはユーザーインターフェースの最小単位です。ウィジェットはウィンドウシステムからマウスやキーボード、その他のイベントを受け取り、画面上に自身の表現を描画します。すべてのウィジェットは長方形であり、Z順で並べられます。ウィジェットは、その親ウィジェットおよびその手前にあるウィジェットによってクリップされます。

親ウィジェットに埋め込まれていないウィジェットは、ウィンドウと呼ばれます。通常、ウィンドウにはフレームとタイトルバーがありますが、適切な `window flags` を使用することで、そのような装飾のないウィンドウを作成することも可能です。Qt では、QMainWindow および `QDialog ` の各種サブクラスが、最も一般的なウィンドウタイプです。

すべてのウィジェットのコンストラクタは、1つまたは2つの標準引数を受け取ります:

  1. QWidget *parent = nullptr は、新しいウィジェットの親となります。これが `nullptr `(デフォルト)の場合、新しいウィジェットはウィンドウとなります。そうでない場合、新しいウィジェットは`parent` の子となり、`parent` のジオメトリに制約されます(ウィンドウフラグとして `Qt::Window ` を指定しない限り)。
  2. Qt::WindowFlags f = { } (利用可能な場合)ウィンドウフラグを設定します。デフォルト設定はほとんどのウィジェットに適していますが、例えばウィンドウシステムのフレームがないウィンドウを作成するには、特別なフラグを使用する必要があります。

QWidget には多くのメンバ関数がありますが、その中には直接的な機能を持たないものもあります。例えば、QWidget には font プロパティがありますが、それ自体はこれを一切使用しません。QLabel 、QPushButton 、QListWidget 、QTabWidget など、実際の機能を提供するサブクラスは数多く存在します。

トップレベルウィジェットと子ウィジェット

親ウィジェットを持たないウィジェットは、常に独立したウィンドウ(トップレベルウィジェット)となります。これらのウィジェットでは、setWindowTitle() およびsetWindowIcon() によって、それぞれタイトルバーとアイコンが設定されます。

ウィンドウ以外のウィジェットは子ウィジェットであり、親ウィジェット内に表示されます。Qt のほとんどのウィジェットは、主に子ウィジェットとして有用です。たとえば、ボタンをトップレベルウィンドウとして表示することも可能ですが、多くのユーザーはボタンをQDialog などの他のウィジェット内に配置することを好みます。

ラベル付きの子ウィジェットを含む予約ウィジェット

さまざまな子ウィジェットを含む親ウィジェット。

上の図は、QGridLayout が提供するレイアウト内で、QGroupBox ウィジェットがさまざまな子ウィジェットを保持している様子を示しています。QLabel の子ウィジェットには、その実際のサイズを示すために枠線が引かれています。

QWidget を使用して子ウィジェットを格納する場合、通常は親 QWidget にレイアウトを追加することになります。詳細については、「レイアウト管理」を参照してください。

複合ウィジェット

ウィジェットが、複数の子ウィジェットをグループ化するコンテナとして使用される場合、それは複合ウィジェットと呼ばれます。これらは、必要な視覚的プロパティを持つウィジェット(例えば、QFrame )を構築し、通常はレイアウトによって管理される子ウィジェットを追加することで作成できます。

複合ウィジェットは、QWidgetやQFrame などの標準ウィジェットをサブクラス化し、サブクラスのコンストラクタ内で必要なレイアウトと子ウィジェットを追加することによっても作成できます。Qtに付属する例の多くはこのアプローチを採用しており、『QtWidgets Tutorial』でも解説されています。

カスタムウィジェットと描画

QWidgetはQPaintDevice のサブクラスであるため、サブクラスを使用することで、QPainter クラスのインスタンスを用いた一連の描画操作によって構成されたカスタムコンテンツを表示することができます。このアプローチは、アプリケーションによってシーンにアイテムが追加され、フレームワーク自体がレンダリングを行うGraphics View Frameworkで採用されているキャンバス形式のアプローチとは対照的です。

各ウィジェットは、paintEvent() 関数内ですべての描画操作を実行します。この関数は、外部の変更があった場合やアプリケーションからの要求があった場合など、ウィジェットの再描画が必要なときに呼び出されます。

「Analog Clock」の例では、単純なウィジェットがペイントイベントをどのように処理するかを示しています。

サイズヒントとサイズポリシー

新しいウィジェットを実装する際は、ほとんどの場合、sizeHint() を再実装してウィジェットの適切なデフォルトサイズを指定し、setSizePolicy() を使用して正しいサイズポリシーを設定することが有用です。

デフォルトでは、サイズヒントを提供しない複合ウィジェットは、その子ウィジェットのスペース要件に応じてサイズが決定されます。

サイズポリシーを設定することで、レイアウト管理システムに対して適切なデフォルト動作を指定でき、他のウィジェットがあなたのウィジェットを容易に包含・管理できるようになります。デフォルトのサイズポリシーでは、サイズヒントがウィジェットの推奨サイズを表すものとみなされます。多くのウィジェットにとって、これだけで十分な場合がほとんどです。

注: トップレベルウィジェットのサイズは 、デスクトップの高さと幅の 2/3 に制限されます。これらの境界が不十分な場合は、resize() を使用してウィジェットを手動でサイズ変更することができます。

イベント

ウィジェットは、通常はユーザーの操作によって引き起こされるイベントに応答します。Qtは、各イベントに関する情報を含むQEvent のサブクラスのインスタンスを用いて、特定のイベントハンドラ関数を呼び出すことで、ウィジェットにイベントを伝達します。

ウィジェットが子ウィジェットのみを含む場合は、おそらくイベントハンドラを実装する必要はありません。子ウィジェットでのマウスクリックを検知したい場合は、ウィジェットの `mousePressEvent()` 内で、その子ウィジェットの `underMouse()` 関数を呼び出してください。

Scribble のサンプルでは、マウスの移動、ボタンの押下、ウィンドウのサイズ変更などを処理するために、より幅広いイベントが実装されています。

独自のウィジェットの動作やコンテンツは自身で用意する必要がありますが、ここではQWidgetに関連するイベントについて、最も一般的なものから順に簡単に概要を説明します。

  • paintEvent() は、ウィジェットの再描画が必要なたびに呼び出されます。カスタムコンテンツを表示するすべてのウィジェットは、これを実装する必要があります。QPainter を使用した描画は、paintEvent() またはpaintEvent() によって呼び出される関数内でのみ実行できます。
  • resizeEvent() は、ウィジェットのサイズが変更されたときに呼び出されます。
  • mousePressEvent() は、マウスカーソルがウィジェット内にある状態でマウスボタンが押されたとき、またはウィジェットが `grabMouse()` を使用してマウスをキャプチャしたときに呼び出されます。マウスボタンを押したまま離さない操作は、実質的に `grabMouse()` を呼び出すのと同じです。
  • mouseReleaseEvent() は、マウスボタンが離されたときに呼び出されます。ウィジェットは、対応するマウス押下イベントを受信した場合に、マウス離しイベントも受信します。つまり、ユーザーがウィジェット内でマウスを押下し、マウスボタンを離す前に別の場所にドラッグした場合でも、そのウィジェットは離しイベントを受信します。 ただし、1つの例外があります。マウスボタンが押されたままの状態でポップアップメニューが表示された場合、そのポップアップメニューが直ちにマウスイベントを横取りします。
  • mouseDoubleClickEvent() は、ユーザーがウィジェット内でダブルクリックしたときに呼び出されます。ユーザーがダブルクリックした場合、ウィジェットはマウス押下イベント、マウス解放イベント(マウスクリックイベント)、2回目のマウス押下イベント、このイベント、そして最後に2回目のマウス解放イベントを受け取ります。 (この操作中にマウスを一定の位置に固定していない場合、いくつかのマウス移動イベントも受信される可能性があります。)2回目のクリックが到着するまでは、クリックとダブルクリックを区別することはできません。(これが、ほとんどのGUI関連の書籍で、ダブルクリックを別のアクションをトリガーするのではなく、シングルクリックの延長として扱うことを推奨している理由の一つです。)

キーボード入力を受け付けるウィジェットは、さらにいくつかのイベントハンドラを再実装する必要があります:

  • keyPressEvent()は、キーが押されるたびに呼び出され、さらにキーが自動反復が行われるほど長く押されたままの状態になると再度呼び出されます。Tab キーとShift+Tab キーは、フォーカス変更の仕組みで使用されていない場合にのみ、ウィジェットに渡されます。これらのキーをウィジェットで強制的に処理するには、QWidget::event()を再実装する必要があります。
  • focusInEvent() は、ウィジェットがキーボードフォーカスを獲得したときに呼び出されます(setFocusPolicy() を呼び出していることを前提とします)。適切に動作するウィジェットは、明確かつ控えめな方法で、自身がキーボードフォーカスを保持していることを示します。
  • focusOutEvent() は、ウィジェットがキーボードフォーカスを失ったときに呼び出されます。

また、あまり一般的ではないイベントハンドラの一部を再実装する必要がある場合もあります:

  • mouseMoveEvent() は、マウスボタンが押されたままの状態でマウスが移動するたびに呼び出されます。これはドラッグ&ドロップ操作の際に役立ちます。setMouseTracking() を true に設定すると、ボタンが押されていないときでもマウス移動イベントを受け取ることができます。(「ドラッグ&ドロップ」ガイドも参照してください。)
  • keyReleaseEvent() は、キーが離されたとき、およびキーが押されている間(そのキーが自動リピート設定されている場合)に呼び出されます。その場合、ウィジェットはリピートごとにキー離しイベントとキー押下イベントのペアを受け取ります。Tab およびShift+Tab キーは、フォーカス変更の仕組みで使用されていない場合にのみ、ウィジェットに渡されます。これらのキーをウィジェットで強制的に処理するには、QWidget::event()を再実装する必要があります。
  • wheelEvent() は、ウィジェットがフォーカスを持っている間にユーザーがマウスホイールを回すたびに呼び出されます。
  • enterEvent() は、マウスがウィジェットの画面領域に入ったときに呼び出されます(ただし、ウィジェットの子ウィジェットのいずれかが所有する画面領域は除きます)。
  • leaveEvent()は、マウスがウィジェットの画面領域から出たときに呼び出されます。マウスが子ウィジェットに入った場合でも、leaveEvent()は呼び出されません。
  • moveEvent() は、ウィジェットが親ウィジェットに対して移動されたときに呼び出されます。
  • closeEvent() は、ユーザーがウィジェットを閉じたとき(またはclose() が呼び出されたとき)に呼び出されます。

また、QEvent::Type のドキュメントには、かなりわかりにくいイベントもいくつか記載されています。これらのイベントを処理するには、event()を直接再実装する必要があります。

event() のデフォルトの実装は、Tab およびShift+Tab (キーボードフォーカスを移動するため)を処理し、その他のイベントのほとんどを上記のより特殊なハンドラのいずれかに渡します。

イベントおよびそれらを伝達するために使用されるメカニズムについては、「イベントシステム」で解説されています。

関数とプロパティのグループ

コンテキスト関数とプロパティ
ウィンドウ関数show()、hide()、raise()、lower()、close()。
最上位ウィンドウwindowModified、windowTitle 、windowIcon 、isActiveWindow 、activateWindow()、minimized 、showMinimized()、maximized 、showMaximized()、fullScreen 、showFullScreen()、showNormal()。
ウィンドウの内容update(),repaint(),scroll().
Geometrypos、x()、y()、rect 、size 、width()、height()、move()、resize()、sizePolicy 、sizeHint()、minimumSizeHint()、updateGeometry()、layout()、frameGeometry 、geometry 、childrenRect 、childrenRegion 、adjustSize()、mapFromGlobal()、mapToGlobal()、mapFromParent()、mapToParent()、maximumSize 、minimumSize 、sizeIncrement 、baseSize 、setFixedSize()
モードvisible、isVisibleTo()、enabled 、isEnabledTo()、modal 、isWindow()、mouseTracking 、updatesEnabled 、visibleRegion()
外観と操作感style(),setStyle(),styleSheet,cursor,font,palette,backgroundRole(),setBackgroundRole(),fontInfo(),fontMetrics().
キーボードフォーカス機能focus、focusPolicy 、setFocus()、clearFocus()、setTabOrder()、setFocusProxy()、focusNextChild()、focusPreviousChild())。
マウスおよびキーボードの奪取grabMouse(),releaseMouse(),grabKeyboard(),releaseKeyboard(),mouseGrabber(),keyboardGrabber().
イベントハンドラevent(),mousePressEvent(),mouseReleaseEvent(),mouseDoubleClickEvent(),mouseMoveEvent(),keyPressEvent(),keyReleaseEvent(),focusInEvent(),focusOutEvent(),wheelEvent(),enterEvent(),leaveEvent(),paintEvent(),moveEvent(),resizeEvent(),closeEvent(),dragEnterEvent(),dragMoveEvent(),dragLeaveEvent(),dropEvent(),childEvent(),showEvent(),hideEvent(),customEvent().changeEvent(),
システム関数parentWidget(),window(),setParent(),winId(),find(),metric().
コンテキストメニューcontextMenuPolicy、contextMenuEvent()、customContextMenuRequested()、actions()
対話型ヘルプsetToolTip(),setWhatsThis()

ウィジェット・スタイルシート

各プラットフォームの標準ウィジェットスタイルに加え、ウィジェットはstyle sheet で指定されたルールに従ってスタイルを設定することもできます。この機能により、特定のウィジェットの外観をカスタマイズし、その目的に関する視覚的な手がかりをユーザーに提供することが可能になります。例えば、ボタンを特定のスタイルでデザインすることで、そのボタンが元に戻せない操作を実行することを示すことができます。

ウィジェット・スタイルシートの使用方法については、『Qt Style Sheets』ドキュメントで詳しく説明されています。

透明度とダブルバッファリング

QWidgetは描画を自動的にダブルバッファリングするため、ちらつきを防ぐためにpaintEvent()内でダブルバッファリングのコードを記述する必要はありません。

Qt::WA_PaintOnScreen が設定されていない限り、親ウィジェットの内容はデフォルトでそれぞれの子ウィジェットに伝播されます。 カスタムウィジェットでは、不規則な領域を更新して(非矩形の子ウィジェットを作成するため)、あるいはアルファ成分を完全に満たさない色で描画することで、この機能を活用することができます。次の図は、さまざまな効果を実現するために、カスタムウィジェットの属性やプロパティをどのように微調整できるかを示しています。

背景のプロパティがそれぞれ異なる家のピクマップが3つあります。具体的には、透明、白で塗りつぶされたもの、および初期化されていないものです。

上の図では、一部が切り取られた半透明の長方形の子ウィジェットが構築され、親ウィジェット(ピクマップを表示するQLabel )に追加されています。その後、さまざまな効果を得るために、異なるプロパティやウィジェット属性が設定されています:

  • 左側のウィジェットには、追加のプロパティやウィジェット属性は設定されていません。このデフォルトの状態は、透明性がある、不規則な形状をしている、または不透明なブラシで領域全体を塗りつぶさない、といったほとんどのカスタムウィジェットに適しています。
  • 中央のウィジェットには、autoFillBackground プロパティが設定されています。このプロパティは、ウィジェットが提供するデフォルトの背景に依存し、不透明なブラシで領域全体を塗りつぶさないカスタムウィジェットで使用されます。
  • 右側のウィジェットには、Qt::WA_OpaquePaintEvent というウィジェット属性が設定されています。これは、ウィジェットがその領域全体を不透明な色で塗りつぶすことを示しています。ウィジェットの領域は当初初期化されておらず、図では、塗りつぶされた領域から透けて見える赤い斜めの格子模様で表されています。

リアルタイムのプロットやグラフ表示ウィジェットなど、単純な背景色でカスタムウィジェットを高速に更新するには、適切な背景色を定義し(QPalette::Window ロールを持つsetBackgroundRole()を使用)、autoFillBackground プロパティを設定し、ウィジェットのpaintEvent()内で必要な描画機能のみを実装するのが望ましいです。

たとえば、ビデオストリーミングウィジェットのように、不透明なコンテンツで領域全体を絶えず塗りつぶすカスタムウィジェットを高速に更新するには、ウィジェットの `Qt::WA_OpaquePaintEvent` を設定し、ウィジェットの背景の再描画に伴う不要なオーバーヘッドを回避することをお勧めします。

ウィジェットに「Qt::WA_OpaquePaintEvent 」ウィジェット属性と「autoFillBackground 」プロパティの両方が設定されている場合、「Qt::WA_OpaquePaintEvent 」属性が優先されます。要件に応じて、どちらか一方を選択してください。

親ウィジェットの内容も、標準のQt Widgetsに反映されます。下の図に示すように、親ウィジェットが非標準的な方法で装飾されている場合、これにより予期しない結果が生じる可能性があります。

あるウィジェットは背景が透明で、もう一方のウィジェットは背景が塗りつぶされています

サブクラス化に頼らずに標準のQt Widgetsの描画動作をカスタマイズできる範囲は、カスタムウィジェットの場合に比べて若干狭くなります。通常、標準ウィジェットの外観は、そのautoFillBackground プロパティを設定することで、希望通りの外観にすることができます。

半透明のウィンドウの作成

コンポジット機能をサポートするウィンドウシステムでは、半透明領域を持つウィンドウを作成できます。

トップレベルウィジェットでこの機能を有効にするには、setAttribute() を使用してそのQt::WA_TranslucentBackground 属性を設定し、部分的に透明にしたい領域の背景が不透明な色で描画されないようにします。

プラットフォームに関する注意事項:

  • X11: この機能は、ARGBビジュアルをサポートするXサーバーと、コンポジティング対応のウィンドウマネージャの使用に依存します。
  • Windows: 半透明機能が動作するには、ウィジェットに `Qt::FramelessWindowHint ` ウィンドウフラグが設定されている必要があります。
  • macOS: 半透明機能が動作するには、ウィジェットにQt::FramelessWindowHint ウィンドウフラグが設定されている必要があります。

ネイティブウィジェットとエイリアンウィジェット

エイリアン・ウィジェットとは、ウィンドウシステムが認識しないウィジェットのことです。これらには、ネイティブのウィンドウハンドルが関連付けられていません。この機能により、ウィジェットの描画やサイズ変更が大幅に高速化され、ちらつきが解消されます。

ネイティブウィンドウを使用した従来の動作が必要な場合は、次のいずれかのオプションを選択してください:

  1. 環境設定で「QT_USE_NATIVE_WINDOWS=1 」を使用してください。
  2. アプリケーションでQt::AA_NativeWindows 属性を設定します。すべてのウィジェットがネイティブウィジェットになります。
  3. ウィジェットにQt::WA_NativeWindow 属性を設定します。ウィジェット自体とそのすべての親ウィジェットがネイティブウィジェットになります(Qt::WA_DontCreateNativeAncestors が設定されていない場合)。
  4. QWidget::winId を呼び出してネイティブウィンドウを強制します(これは3を意味します)。
  5. Qt::WA_PaintOnScreen 属性を設定してネイティブウィンドウを強制します(これは 3 を意味します)。

QEvent 、QPainter 、QGridLayout 、およびQBoxLayoutも参照してください 。

メンバ型のドキュメント

enum QWidget::RenderFlag
flags QWidget::RenderFlags

この列挙型は、QWidget::render() を呼び出した際のウィジェットのレンダリング方法を定義します。

定数定数名説明
QWidget::DrawWindowBackground0x1このオプションを有効にすると、autoFillBackground が設定されていなくても、ウィジェットの背景がターゲットにレンダリングされます。デフォルトでは、このオプションは有効になっています。
QWidget::DrawChildren0x2このオプションを有効にすると、ウィジェットの子要素がターゲットに対して再帰的に描画されます。デフォルトでは、このオプションは有効になっています。
QWidget::IgnoreMask0x4このオプションを有効にすると、ターゲットへのレンダリング時にウィジェットのQWidget::mask()が無視されます。デフォルトでは、このオプションは無効になっています。

RenderFlags 型は、QFlags<RenderFlag> の typedef です。RenderFlag 値の論理和(OR)を格納します。

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

acceptDrops : bool

このプロパティは、このウィジェットでドロップイベントが有効になっているかどうかを指定します

このプロパティを true に設定すると、このウィジェットがドロップイベントを受け入れる可能性があることをシステムに通知します。

警告: ドラッグ&ドロップイベントハンドラ内でこのプロパティを変更しないでください 。

デフォルトでは、このプロパティはfalse に設定されています。

アクセス関数:

bool acceptDrops() const
void setAcceptDrops(bool on)

「ドラッグ&ドロップ」も参照してください 。

accessibleDescription : QString

このプロパティには、支援技術から認識されるウィジェットの説明が格納されます

ウィジェットのアクセシビリティ記述は、そのウィジェットがどのような機能を持つかを伝えるものでなければなりません。「accessibleName 」は短く簡潔な文字列(例:保存)であるべきですが、この記述では「現在のドキュメントを保存します」といった、より詳しい文脈を明示する必要があります。

このプロパティはローカライズする必要があります。

デフォルトでは、このプロパティには空の文字列が格納されており、Qtはこの情報を提供するためにツールチップを代替手段として使用します。

アクセス関数:

QString accessibleDescription() const
void setAccessibleDescription(const QString &description)

「 QWidget::accessibleName 」および「QAccessibleInterface::text()」も参照してください 。

[since 6.9] accessibleIdentifier : QString

このプロパティには、支援技術から認識されるウィジェットの識別子が格納されます

このプロパティが設定されている場合、支援技術はウィジェットのアクセシビリティ識別子を使用して、特定のウィジェットを識別することができます(例:自動テストなど)。

この列挙型は Qt 6.9 で導入されました。

アクセス関数:

QString accessibleIdentifier() const
void setAccessibleIdentifier(const QString &identifier)

accessibleName : QString

このプロパティには、支援技術から認識されるウィジェットの名前が格納されます

これは、スクリーンリーダーなどの支援技術がこのウィジェットを読み上げる際に使用する主要な名前です。ほとんどのウィジェットでは、このプロパティを設定する必要はありません。たとえば、QPushButton の場合、ボタンのテキストが使用されます。

ウィジェットにテキストが含まれていない場合は、このプロパティを設定することが重要です。たとえば、アイコンのみを含むボタンは、スクリーンリーダーで正しく機能させるためにこのプロパティを設定する必要があります。名前は短く、ウィジェットが伝える視覚的な情報と同等のものにする必要があります。

このプロパティはローカライズする必要があります。

デフォルトでは、このプロパティには空の文字列が設定されています。

アクセス関数:

QString accessibleName() const
void setAccessibleName(const QString &name)

関連項目: QWidget::accessibleDescription およびQAccessibleInterface::text()。

autoFillBackground : bool

このプロパティは、ウィジェットの背景が自動的に塗りつぶされるかどうかを指定します

このプロパティを有効にすると、Qt はペイントイベントを呼び出す前にウィジェットの背景を塗りつぶします。使用される色は、ウィジェットのpalette にあるQPalette::Window カラーロールによって定義されます。

さらに、WA_OpaquePaintEvent または WA_NoSystemBackground 属性が設定されていない限り、ウィンドウの背景は常に `QPalette::Window` で塗りつぶされます。

ウィジェットの親が静的なグラデーションを背景として持っている場合、このプロパティを無効にする(つまり false に設定する)ことはできません。

警告: Qt スタイルシートと組み合わせてこのプロパティを使用する場合は 注意が必要です。ウィジェットに有効な背景やボーダー画像を含むスタイルシートが設定されている場合、このプロパティは自動的に無効になります。

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

アクセス関数:

bool autoFillBackground() const
void setAutoFillBackground(bool enabled)

関連項目: Qt::WA_OpaquePaintEvent 、Qt::WA_NoSystemBackground 、およびTransparency and Double Bufferingを参照してください 。

baseSize : QSize

このプロパティは、ウィジェットのベースサイズを保持します

ウィジェットがsizeIncrement()を定義している場合、この基本サイズを用いて適切なウィジェットサイズが計算されます。

デフォルトでは、新しく作成されたウィジェットの場合、このプロパティには幅と高さがゼロのサイズが格納されます。

アクセス関数:

QSize baseSize() const
void setBaseSize(const QSize &)
void setBaseSize(int basew, int baseh)

関連項目: setSizeIncrement()。

[read-only] childrenRect : QRect

このプロパティには、ウィジェットの子要素のバウンディング矩形が格納されます

非表示の子要素は除外されます。

デフォルトでは、子要素のないウィジェットの場合、このプロパティには、原点に位置する幅と高さがゼロの矩形が含まれます。

アクセス関数:

QRect childrenRect() const

childrenRegion() およびgeometry()も参照してください 。

[read-only] childrenRegion : QRegion

このプロパティには、ウィジェットの子要素が占める領域の合計が格納されます

非表示の子要素は除外されます。

デフォルトでは、子要素を持たないウィジェットの場合、このプロパティには空の領域が含まれます。

アクセス関数:

QRegion childrenRegion() const

childrenRect()、geometry()、およびmask()も参照してください 。

contextMenuPolicy : Qt::ContextMenuPolicy

ウィジェットがコンテキストメニューを表示する方法

このプロパティのデフォルト値は `Qt::DefaultContextMenu` であり、これは `contextMenuEvent()` ハンドラが呼び出されることを意味します。その他の値には、`Qt::NoContextMenu`、`Qt::PreventContextMenu`、`Qt::ActionsContextMenu`、および `Qt::CustomContextMenu` があります。`Qt::CustomContextMenu` を指定すると、シグナル `customContextMenuRequested()` が発火します。

アクセス関数:

Qt::ContextMenuPolicy contextMenuPolicy() const
void setContextMenuPolicy(Qt::ContextMenuPolicy policy)

contextMenuEvent()、customContextMenuRequested()、およびactions()も参照してください 。

cursor : QCursor

このプロパティは、このウィジェットのカーソル形状を保持します

マウスカーソルがこのウィジェットの上に移動すると、この形状になります。便利な形状の一覧については、list of predefined cursor objects を参照してください。

エディタウィジェットでは、Iビームカーソルを使用する場合があります。

setCursor(Qt::IBeamCursor);

カーソルが設定されていない場合、または unsetCursor() が呼び出された後は、親ウィジェットのカーソルが使用されます。

デフォルトでは、このプロパティにはQt::ArrowCursor の形状を持つカーソルが格納されています。

一部のウィンドウ実装では、マウスがグラブされている場合でも、カーソルがウィジェットから離れた際にカーソルがリセットされることがあります。ウィンドウの外側にある場合でも、すべてのウィジェットに対してカーソルを設定したい場合は、QGuiApplication::setOverrideCursor() の使用を検討してください。

アクセス関数:

QCursor cursor() const
void setCursor(const QCursor &)
void unsetCursor()

QGuiApplication::setOverrideCursor()も参照してください 。

enabled : bool

このプロパティは、ウィジェットが有効かどうかを表します

一般的に、有効なウィジェットはキーボードやマウスのイベントを処理しますが、無効なウィジェットは処理しません。ただし、QAbstractButton については例外となります。

一部のウィジェットは、無効化されると表示が変化します。たとえば、ボタンではラベルがグレーアウトされる場合があります。ウィジェットが有効化または無効化されたことを把握する必要がある場合は、typeパラメータにQEvent::EnabledChange を指定してchangeEvent()を使用できます。

ウィジェットを無効にすると、そのすべての子ウィジェットも暗黙的に無効になります。同様に、有効にすると、明示的に無効にされていない限り、すべての子ウィジェットが有効になります。親ウィジェットが無効な状態では、ウィンドウではない子ウィジェットを明示的に有効にすることはできません。

デフォルトでは、このプロパティは `true` です。

アクセス関数:

bool isEnabled() const
void setEnabled(bool)

関連項目: isEnabledTo()、QKeyEvent 、QMouseEvent 、およびchangeEvent()。

[read-only] focus : bool

このプロパティは、このウィジェット(またはそのフォーカスプロキシ)がキーボード入力のフォーカスを有しているかどうかを表します

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

注: ウィジェットに対してこのプロパティの値を取得することは 、実質的に `QApplication::focusWidget()` がそのウィジェットを指しているかどうかを確認することと同等です。

アクセス関数:

bool hasFocus() const

関連項目: setFocus()、clearFocus()、setFocusPolicy()、およびQApplication::focusWidget()。

focusPolicy : Qt::FocusPolicy

このプロパティは、ウィジェットがキーボードフォーカスを受け付ける方法を指定します

このポリシーは、ウィジェットがタブキー操作でキーボードフォーカスを受け付ける場合は `Qt::TabFocus `、クリックでフォーカスを受け付ける場合は `Qt::ClickFocus `、両方で受け付ける場合は `Qt::StrongFocus `、フォーカスを一切受け付けない場合は `Qt::NoFocus `(デフォルト)となります。

ウィジェットがキーボードイベントを処理する場合は、キーボードフォーカスを有効にする必要があります。これは通常、ウィジェットのコンストラクタから行われます。例えば、QLineEdit のコンストラクタでは setFocusPolicy(Qt::StrongFocus) が呼び出されます。

ウィジェットにフォーカスプロキシがある場合、フォーカスポリシーはそこに伝播されます。

アクセス関数:

Qt::FocusPolicy focusPolicy() const
void setFocusPolicy(Qt::FocusPolicy policy)

関連項目: focusInEvent(),focusOutEvent(),keyPressEvent(),keyReleaseEvent(), およびenabled 。

font : QFont

このプロパティには、ウィジェットに現在設定されているフォントが格納されます

このプロパティは、ウィジェットが要求するフォントを表します。このフォントは、標準コンポーネントをレンダリングする際にウィジェットのスタイルで使用され、カスタムウィジェットがネイティブプラットフォームのルックアンドフィールとの一貫性を維持するための手段としても利用できます。アプリケーションにおいて、プラットフォームやスタイルが異なると、定義されるフォントも異なることが一般的です。

ウィジェットに新しいフォントを割り当てると、そのフォントのプロパティがウィジェットのデフォルトフォントと組み合わされ、ウィジェットの最終的なフォントが形成されます。fontInfo() を呼び出すことで、ウィジェットの最終的なフォントのコピーを取得できます。この最終的なフォントは、QPainter のフォントを初期化する際にも使用されます。

デフォルトはシステム環境によって異なります。QApplication は、すべてのウィジェットのデフォルトとして機能するシステム/テーマフォントを保持しています。また、特定の種類のウィジェットには、特別なデフォルトフォントが設定されている場合もあります。さらに、QApplication::setFont() にカスタムフォントとウィジェットの名前を渡すことで、ウィジェットのデフォルトフォントを自分で定義することもできます。 最後に、そのフォントは Qt のフォントデータベースと照合され、最も適合するフォントが検索されます。

QWidget 明示的なフォントプロパティは、親から子へと伝播します。フォントの特定のプロパティを変更し、そのフォントをウィジェットに割り当てると、そのプロパティはウィジェットのすべての子要素に伝播され、そのプロパティに関するシステムのデフォルト設定を上書きします。なお、Qt::WA_WindowPropagation 属性が有効になっていない限り、フォントはデフォルトではウィンドウには伝播されません(isWindow()を参照)。

QWidgetのフォントの伝播は、パレットの伝播と同様です。

すべての標準的な Qt Widgets のコンテンツをレンダリングするために使用される現在のスタイルは、ウィジェットのフォントを使用するか、場合によっては(部分的または完全に)それを無視するかを自由に選択できます。 特に、GTK スタイル、Mac スタイル、Windows Vista スタイルなどの特定のスタイルでは、プラットフォームのネイティブなルックアンドフィールに合わせるために、ウィジェットのフォントに特別な変更が適用されます。このため、ウィジェットのフォントにプロパティを割り当てても、ウィジェットの外観が確実に変更されるとは限りません。代わりに、styleSheet を適用することを選択することもできます。

注: setFont() と同じウィジェットでQt スタイルシートが使用されている場合 、設定が競合するとスタイルシートが優先されます。

アクセス関数:

const QFont &font() const
void setFont(const QFont &)

関連項目: ` fontInfo()` および `fontMetrics()`。

[read-only] frameGeometry : QRect

ウィジェットの親(ウィンドウ枠を含む)に対する位置関係

ウィンドウのジオメトリに関する概要については、「Window Geometry」のドキュメントを参照してください。

デフォルトでは、このプロパティには、ユーザーのプラットフォームおよび画面のジオメトリに依存する値が格納されます。

アクセス関数:

QRect frameGeometry() const

geometry()、x()、y()、およびpos()も参照してください 。

[read-only] frameSize : QSize

このプロパティには、ウィンドウ枠を含むウィジェットのサイズが格納されます

デフォルトでは、このプロパティには、ユーザーのプラットフォームおよび画面のジオメトリに応じて決定される値が格納されます。

アクセス関数:

QSize frameSize() const

[read-only] fullScreen : bool

このプロパティは、ウィジェットがフルスクリーンモードで表示されているかどうかを示します

フルスクリーンモードのウィジェットは画面全体を占有し、タイトルバーなどのウィンドウ装飾は表示されません。

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

アクセス関数:

bool isFullScreen() const

関連項目: windowState()、minimized 、およびmaximized 。

geometry : QRect

このプロパティには、ウィンドウの枠を除き、親ウィジェットに対するウィジェットのジオメトリが格納されます。

ウィジェットがトップレベルウィジェット(ウィンドウ)である場合、そのジオメトリはグローバルな画面座標で指定されます。

ジオメトリを変更すると、ウィジェットが可視状態にある場合は、直ちに移動イベント (moveEvent()) および/またはリサイズイベント (resizeEvent()) を受け取ります。ウィジェットが現在可視状態でない場合は、表示される前に適切なイベントが確実に受信されます。

サイズ成分がminimumSize() およびmaximumSize() で定義された範囲外にある場合、そのサイズは調整されます。

警告: resizeEvent() またはmoveEvent() 内で setGeometry()を呼び出すと 、無限再帰を引き起こす可能性があります。

ウィンドウのジオメトリに関する問題の概要については、「Window Geometry」のドキュメントを参照してください。

デフォルトでは、このプロパティには、ユーザーのプラットフォームおよび画面のジオメトリに依存する値が格納されます。

アクセス関数:

const QRect &geometry() const
void setGeometry(int x, int y, int w, int h)
void setGeometry(const QRect &)

関連項目: frameGeometry()、rect()、move()、resize()、moveEvent()、resizeEvent()、minimumSize()、およびmaximumSize()。

[read-only] height : int

このプロパティには、ウィンドウの枠を除いたウィジェットの高さが格納されます

ウィンドウのジオメトリに関する概要については、「Window Geometry」のドキュメントを参照してください。

デフォルトでは、このプロパティには、ユーザーのプラットフォームおよびscreen geometry に依存する値が格納されます。

アクセス関数:

int height() const

geometry 、width 、およびsizeも参照してください 。

inputMethodHints : Qt::InputMethodHints

このウィジェットが持つ、入力方式固有のヒント。

これは入力ウィジェットにのみ関係します。入力メソッドはこれを使用して、自身の動作方法に関するヒントを取得します。たとえば、Qt::ImhFormattedNumbersOnly フラグが設定されている場合、入力メソッドは、数字のみが入力可能であることを反映するように、視覚的なコンポーネントを変更することがあります。

警告:一部の ウィジェットは 、意図したとおりに動作するために特定のフラグを必要とします。フラグを設定するには、w->setInputMethodHints(f) の代わりにw->setInputMethodHints(w->inputMethodHints()|f) を使用してください。

注:フラグは あくまでヒントであるため、具体的な入力メソッドの実装ではこれを無視してもかまいません。特定の種類の文字が入力されることを確実にしたい場合は、ウィジェットに対しても `QValidator ` を設定する必要があります。

デフォルト値はQt::ImhNone です。

アクセス関数:

Qt::InputMethodHints inputMethodHints() const
void setInputMethodHints(Qt::InputMethodHints hints)

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

[read-only] isActiveWindow : bool

このプロパティは、このウィジェットのウィンドウがアクティブなウィンドウであるかどうかを表します

アクティブなウィンドウとは、キーボードフォーカスを持っているウィジェットを含むウィンドウのことです(ウィジェットが全くない場合や、そのウィジェットのいずれもキーボードフォーカスを受け付けない場合でも、そのウィンドウはフォーカスを保持している可能性があります)。

ポップアップウィンドウが表示されている場合、このプロパティはアクティブなウィンドウとポップアップウィンドウの両方で`true ` となります。

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

アクセス関数:

bool isActiveWindow() const

関連項目: activateWindow() およびQApplication::activeWindow()。

layoutDirection : Qt::LayoutDirection

このプロパティは、このウィジェットのレイアウト方向を保持します。

注: Qt 4.7 以降、この メソッドは テキストのレイアウト方向に影響しなくなりました。

デフォルトでは、このプロパティは `Qt::LeftToRight` に設定されています。

ウィジェットでレイアウト方向が設定されると、その設定はウィジェットの子ウィジェットに伝播しますが、ウィンドウである子ウィジェットや、setLayoutDirection() が明示的に呼び出された子ウィジェットには伝播しません。 また、親に対して setLayoutDirection() が呼び出された後に追加された子ウィジェットは、親のレイアウト方向を継承しません。

アクセス関数:

Qt::LayoutDirection layoutDirection() const
void setLayoutDirection(Qt::LayoutDirection direction)
void unsetLayoutDirection()

「QApplication::layoutDirection」も参照してください 。

locale : QLocale

このプロパティには、ウィジェットのロケールが格納されます

特別なロケールが設定されていない限り、これは親ウィジェットのロケール、あるいは(このウィジェットが最上位のウィジェットである場合は)デフォルトのロケールとなります。

ウィジェットが日付や数値を表示する場合、それらはウィジェットのロケールを使用してフォーマットされる必要があります。

アクセス関数:

QLocale locale() const
void setLocale(const QLocale &locale)
void unsetLocale()

QLocale およびQLocale::setDefault()も参照してください 。

[read-only] maximized : bool

このプロパティは、このウィジェットが最大化されているかどうかを表します

このプロパティはウィンドウにのみ適用されます。

注: 一部のウィンドウシステムにおける制限のため 、このプロパティは必ずしも期待通りの結果を報告するとは限りません(例えば、X11 環境でユーザーがウィンドウマネージャを介してウィンドウを最大化させた場合、Qt はこれを他のサイズ変更と区別する方法がありません)。これは、ウィンドウマネージャのプロトコルが進化するにつれて改善されることが期待されます。

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

アクセス関数:

bool isMaximized() const

関連項目: windowState()、showMaximized()、visible 、show()、hide()、showNormal()、およびminimized 。

maximumHeight : int

このプロパティは、ウィジェットの最大高さをピクセル単位で保持します

このプロパティは、maximumSize プロパティが保持する高さに相当します。

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

注: QWIDGETSIZE_MAX マクロの定義により 、ウィジェットの最大サイズが制限されます。

アクセス関数:

int maximumHeight() const
void setMaximumHeight(int maxh)

関連項目: maximumSize およびmaximumWidth 。

maximumSize : QSize

このプロパティには、ウィジェットの最大サイズ(ピクセル単位)が格納されます

ウィジェットのサイズは、最大サイズを超える大きさに変更することはできません。

デフォルトでは、このプロパティには幅と高さの両方の値が 16777215 であるサイズが格納されています。

注: QWIDGETSIZE_MAX マクロの定義により 、ウィジェットの最大サイズが制限されます。

アクセス関数:

QSize maximumSize() const
void setMaximumSize(const QSize &)
void setMaximumSize(int maxw, int maxh)

関連項目: maximumWidth 、maximumHeight 、minimumSize 、およびsizeIncrement 。

maximumWidth : int

このプロパティには、ウィジェットの最大幅(ピクセル単位)が格納されます

このプロパティは、maximumSize プロパティで保持される幅に対応しています。

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

注: QWIDGETSIZE_MAX マクロの定義により 、ウィジェットの最大サイズが制限されます。

アクセス関数:

int maximumWidth() const
void setMaximumWidth(int maxw)

関連項目: maximumSize およびmaximumHeight 。

[read-only] minimized : bool

このプロパティは、このウィジェットが最小化(アイコン化)されているかどうかを表します。

このプロパティはウィンドウにのみ適用されます。

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

アクセス関数:

bool isMinimized() const

関連項目: showMinimized()、visible 、show()、hide()、showNormal()、およびmaximized 。

minimumHeight : int

このプロパティは、ウィジェットの最小高さをピクセル単位で保持します

このプロパティは、minimumSize プロパティで保持される高さに相当します。

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

アクセス関数:

int minimumHeight() const
void setMinimumHeight(int minh)

「 minimumSize 」および「minimumWidth 」も参照してください 。

minimumSize : QSize

このプロパティは、ウィジェットの最小サイズを保持します

ウィジェットは、最小サイズよりも小さいサイズにリサイズすることはできません。現在のサイズが最小サイズよりも小さい場合、ウィジェットのサイズは最小サイズに強制的に設定されます。

この関数で設定された最小サイズは、QLayout で定義された最小サイズを上書きします。最小サイズを解除するには、QSize(0, 0) の値を使用してください。

デフォルトでは、このプロパティには幅と高さがゼロのサイズが設定されています。

アクセス関数:

QSize minimumSize() const
void setMinimumSize(const QSize &)
void setMinimumSize(int minw, int minh)

関連項目: minimumWidth 、minimumHeight 、maximumSize 、およびsizeIncrement 。

[read-only] minimumSizeHint : QSize

このプロパティには、ウィジェットの推奨最小サイズが格納されます

このプロパティの値が無効なサイズである場合、推奨される最小サイズは指定されません。

minimumSizeHint() のデフォルトの実装は、このウィジェットにレイアウトがない場合は無効なサイズを返し、それ以外の場合はレイアウトの最小サイズを返します。ほとんどの組み込みウィジェットは minimumSizeHint() を再実装しています。

QLayout minimumSize() が設定されているか、サイズポリシーが QSizePolicy::Ignore に設定されていない限り、ウィジェットは最小サイズヒントよりも小さいサイズにリサイズされることはありません。 () が設定されている場合、最小サイズヒントは無視されます。minimumSize

アクセス関数:

virtual QSize minimumSizeHint() const

関連項目: QSize::isValid()、resize()、setMinimumSize()、およびsizePolicy()。

minimumWidth : int

このプロパティは、ウィジェットの最小幅(ピクセル単位)を保持します

このプロパティは、minimumSize プロパティが保持する幅に対応しています。

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

アクセス関数:

int minimumWidth() const
void setMinimumWidth(int minw)

「 minimumSize 」および「minimumHeight 」も参照してください 。

このプロパティは、ウィジェットがモーダルウィジェットであるかどうかを示します

このプロパティはウィンドウに対してのみ意味を持ちます。モーダルウィジェットは、他のすべてのウィンドウ内のウィジェットが入力を受け取れないようにします。

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

アクセス関数:

bool isModal() const

関連項目: isWindow()、windowModality 、およびQDialog 。

mouseTracking : bool

このプロパティは、ウィジェットでマウストラッキングが有効になっているかどうかを示します

マウストラッキングが無効になっている場合(デフォルト)、ウィジェットは、マウスを移動させている間に少なくとも1つのマウスボタンが押されている場合にのみ、マウス移動イベントを受け取ります。

マウストラッキングが有効な場合、ボタンが押されていないときでも、ウィジェットはマウス移動イベントを受信します。

アクセス関数:

bool hasMouseTracking() const
void setMouseTracking(bool enable)

関連項目: mouseMoveEvent()。

[read-only] normalGeometry : QRect

このプロパティには、ウィジェットが通常の(最大化または全画面表示ではない)トップレベルウィジェットとして表示された際のジオメトリが格納されます。

ウィジェットがすでにこの状態にある場合、通常のジオメトリにはウィジェットの現在のgeometry()の値が反映されます。

子ウィジェットの場合、このプロパティには常に空の矩形が保持されます。

デフォルトでは、このプロパティには空の矩形が含まれます。

アクセス関数:

QRect normalGeometry() const

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

palette : QPalette

このプロパティは、ウィジェットのパレットを保持します

このプロパティは、ウィジェットのパレットを記述します。このパレットは、標準コンポーネントをレンダリングする際にウィジェットのスタイルによって使用され、カスタムウィジェットがネイティブプラットフォームのルックアンドフィールとの一貫性を維持するための手段としても利用できます。プラットフォームやスタイルが異なると、パレットも異なるのが一般的です。

ウィジェットに新しいパレットを割り当てると、このパレットのカラーロールがウィジェットのデフォルトパレットと組み合わされ、ウィジェットの最終的なパレットが形成されます。ウィジェットの背景ロールに対応するパレットエントリは、ウィジェットの背景を塗りつぶすために使用され(QWidget::autoFillBackground を参照)、前景色ロールはQPainter のペンを初期化します。

デフォルトはシステム環境によって異なります。QApplication は、すべてのウィジェットのデフォルトとして機能するシステム/テーマパレットを管理しています。また、特定の種類のウィジェットには特別なデフォルトパレットが設定されている場合もあります(たとえば、Windows Vista では、QMenuBar から派生するすべてのクラスに特別なデフォルトパレットが設定されています)。 また、QApplication::setPalette() にカスタムパレットとウィジェットの名前を渡すことで、ウィジェットのデフォルトパレットを独自に定義することもできます。最後に、スタイルには、パレットが割り当てられる際にそのパレットを微調整するオプションが常に用意されています(QStyle::polish() を参照)。

QWidget は、明示的なパレットのロールを親から子へ伝播します。パレット上の特定のロールにブラシや色を割り当て、そのパレットをウィジェットに割り当てると、そのロールはウィジェットのすべての子要素に伝播され、そのロールに関するシステムのデフォルト設定を上書きします。 なお、Qt::WA_WindowPropagation 属性が有効になっていない限り、パレットはデフォルトではウィンドウには伝播されません(isWindow()を参照)。

QWidgetのパレットの伝播は、フォントの伝播と似ています。

すべての標準的な Qt Widgets のコンテンツをレンダリングするために使用される現在のスタイルは、ウィジェットパレットから色やブラシを自由に選択したり、場合によってはパレットを(部分的または完全に)無視したりすることができます。 特に、GTK スタイル、Mac スタイル、Windows Vista スタイルなどの特定のスタイルは、ウィジェットのコンテンツをレンダリングするためにサードパーティの API に依存しており、これらのスタイルは通常、パレットに従いません。このため、ウィジェットのパレットにロールを割り当てても、ウィジェットの外観が必ず変更されるとは限りません。 その代わりに、スタイルシートを適用することを選択できます。

警告: この関数をQt スタイルシートと併用しないでください 。スタイルシートを使用する場合、ウィジェットのパレットは「color」、「background-color」、「selection-color」、「selection-background-color」、および「alternate-background-color」を使用してカスタマイズできます。

アクセス関数:

const QPalette &palette() const
void setPalette(const QPalette &)

関連項目: QGuiApplication::palette()、QWidget::font()、およびQt スタイルシート。

pos : QPoint

このプロパティは、親ウィジェット内でのウィジェットの位置を保持します

ウィジェットがウィンドウである場合、その位置はフレームを含めたデスクトップ上のウィジェットの位置となります。

位置を変更すると、ウィジェットが表示されている場合は、直ちに移動イベント (moveEvent()) を受け取ります。ウィジェットが現在表示されていない場合は、表示される前にイベントを受け取ることが保証されています。

デフォルトでは、このプロパティには原点を基準とした位置が格納されます。

警告: `moveEvent()` 内で `move()` または `setGeometry()`を呼び出すと 、無限再帰を引き起こす可能性があります。

ウィンドウのジオメトリに関する概要については、「Window Geometry」のドキュメントを参照してください。

注: すべてのウィンドウシステムが、最上位ウィンドウの位置の設定や照会をサポートしているわけではありません。 そのようなシステムでは、プログラムによるウィンドウの移動は効果がない場合があり、現在の位置としてQPoint(0, 0) などの人工的な値が返されることがあります。

アクセス関数:

QPoint pos() const
void move(int x, int y)
void move(const QPoint &)

frameGeometry 、size 、x()、およびy()も参照してください 。

[read-only] rect : QRect

このプロパティには、ウィンドウフレームを除いたウィジェットの内部ジオメトリが格納されます

rect プロパティの値は、QRect(0, 0,width(),height() となります。

ウィンドウのジオメトリに関する概要については、「Window Geometry」のドキュメントを参照してください。

デフォルトでは、このプロパティには、ユーザーのプラットフォームおよび画面のジオメトリに応じた値が格納されます。

アクセス関数:

QRect rect() const

sizeも参照してください 。

size : QSize

このプロパティは、ウィンドウの枠を除いたウィジェットのサイズを保持します

ウィジェットのサイズ変更中にウィジェットが表示されている場合、直ちにサイズ変更イベント(resizeEvent())が送信されます。ウィジェットが現在表示されていない場合、表示される前にイベントが確実に送信されます。

サイズがminimumSize() およびmaximumSize() で定義された範囲外にある場合、サイズは調整されます。

デフォルトでは、このプロパティには、ユーザーのプラットフォームおよび画面のジオメトリに依存する値が格納されます。

警告: resizeEvent() 内で resize() またはsetGeometry()を呼び出すと 、無限再帰を引き起こす可能性があります。

注: サイズをQSize(0, 0) に設定すると 、ウィジェットが画面に表示されなくなります。これはウィンドウにも当てはまります。

アクセス関数:

QSize size() const
void resize(int w, int h)
void resize(const QSize &)

関連項目: pos 、geometry 、minimumSize 、maximumSize 、resizeEvent()、およびadjustSize()。

[read-only] sizeHint : QSize

このプロパティには、ウィジェットの推奨サイズが格納されます

このプロパティの値が無効なサイズである場合、推奨サイズは指定されません。

sizeHint() のデフォルトの実装では、このウィジェットのレイアウトが存在しない場合は無効なサイズを返し、それ以外の場合はレイアウトの推奨サイズを返します。

アクセス関数:

virtual QSize sizeHint() const

関連項目: QSize::isValid()、minimumSizeHint()、sizePolicy()、setMinimumSize()、およびupdateGeometry()。

sizeIncrement : QSize

このプロパティは、ウィジェットのサイズ変更の増分値を保持します。

ユーザーがウィンドウのサイズを変更すると、サイズは sizeIncrement() ピクセル単位で段階的に変更されます。width() ピクセル分水平方向に移動し、sizeIncrement.height() ピクセル分垂直方向に移動します。この際、baseSize() が基準となります。ウィジェットの推奨サイズは、非負の整数iおよびj に対して次のように定義されます:

width = baseSize().width() + i * sizeIncrement().width();
height = baseSize().height() + j * sizeIncrement().height();

すべてのウィジェットのサイズ増分を設定することは可能ですが、その影響を受けるのはウィンドウのみであることに注意してください。

デフォルトでは、このプロパティには幅と高さがゼロのサイズが設定されています。

警告:サイズ増分は Windows では効果がなく、X11 ではウィンドウマネージャによって無視される可能性があります。

アクセス関数:

QSize sizeIncrement() const
void setSizeIncrement(const QSize &)
void setSizeIncrement(int w, int h)

関連項目: size 、minimumSize 、およびmaximumSize 。

sizePolicy : QSizePolicy

このプロパティは、ウィジェットのデフォルトのレイアウト動作を保持します

このウィジェットの子要素を管理するQLayout が存在する場合、そのレイアウトで指定されたサイズポリシーが使用されます。そのようなQLayout が存在しない場合は、この関数の結果が使用されます。

デフォルトのポリシーは Preferred/Preferred であり、これはウィジェットのサイズを自由に変更できるが、sizeHint() が返すサイズが優先されることを意味します。ボタンのようなウィジェットは、サイズポリシーを設定して、水平方向に伸縮可能だが、垂直方向は固定であることを指定します。 これは、lineedit コントロール(QLineEdit 、QSpinBox 、または編集可能なQComboBox など)や、その他の水平方向に配置されたウィジェット(QProgressBar など)にも同様に当てはまります。QToolButton は通常正方形であるため、両方向への拡大が可能です。 異なる方向に対応しているウィジェット(QSlider 、QScrollBar 、QHeaderなど)は、それぞれの方向への伸縮のみを指定します。スクロールバーを提供できるウィジェット(通常はQScrollArea のサブクラス)は、追加のスペースを使用できること、およびsizeHint() よりも少ないスペースで対応できることを指定する傾向があります。

アクセス関数:

QSizePolicy sizePolicy() const
void setSizePolicy(QSizePolicy)
void setSizePolicy(QSizePolicy::Policy horizontal, QSizePolicy::Policy vertical)

sizeHint()、QLayout 、QSizePolicy 、およびupdateGeometry()も参照してください 。

statusTip : QString

このプロパティには、ウィジェットのステータスヒントが格納されます

デフォルトでは、このプロパティには空の文字列が格納されます。

アクセス関数:

QString statusTip() const
void setStatusTip(const QString &)

toolTip およびwhatsThisも参照してください 。

styleSheet : QString

このプロパティには、ウィジェットのスタイルシートが格納されます

このスタイルシートには、Qt スタイルシートに関するドキュメントに記載されている通り、ウィジェットのスタイルのカスタマイズに関する記述が含まれています。

ウィジェットにスタイルシートを設定すると、そのウィジェットとその子ウィジェットは、現在のstyle をラップするスタイルシートのスタイルを使用するようになります。スタイルシートの使用タイミングについては、「Qt Widgets のスタイリング手法」を参照してください。

アクセス関数:

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

関連項目: setStyle()、QApplication::styleSheet 、Qtスタイルシート、および「Qt Widgets のスタイル設定手法」を参照してください 。

tabletTracking : bool

このプロパティは、ウィジェットでタブレットのトラッキングが有効になっているかどうかを示します

タブレット追跡が無効になっている場合(デフォルト設定)、ウィジェットがタブレット移動イベントを受信するのは、スタイラスがタブレットに接触しているとき、またはスタイラスを移動させている間に少なくとも1つのスタイラスボタンが押されているときのみです。

タブレット追跡が有効になっている場合、ウィジェットはスタイラスがタブレットの近くをホバーしている間でも、タブレットの移動イベントを受信します。これは、位置や回転、傾きなどの補助的なプロパティを監視し、UI上でフィードバックを提供するのに役立ちます。

アクセス関数:

bool hasTabletTracking() const
void setTabletTracking(bool enable)

関連項目: ` tabletEvent()`。

toolTip : QString

このプロパティには、ウィジェットのツールチップが格納されます

なお、デフォルトでは、アクティブなウィンドウの子であるウィジェットに対してのみツールチップが表示されます。この動作を変更するには、ツールチップを持つウィジェットではなく、ウィンドウに対して Qt::WA_AlwaysShowToolTips 属性を設定してください。

ツールチップの挙動を制御したい場合は、event() 関数をインターセプトし、QEvent::ToolTip イベントをキャッチすることができます(例:ツールチップを表示する領域をカスタマイズしたい場合など)。

デフォルトでは、このプロパティには空の文字列が格納されています。

アクセス関数:

QString toolTip() const
void setToolTip(const QString &)

関連項目: QToolTip 、statusTip 、およびwhatsThis 。

toolTipDuration : int

このプロパティは、ウィジェットのツールチップの表示時間を指定します

ツールチップが表示される時間をミリ秒単位で指定します。値が -1(デフォルト)の場合、表示時間はツールチップの長さに応じて計算されます。

アクセス関数:

int toolTipDuration() const
void setToolTipDuration(int msec)

関連項目: toolTip 。

updatesEnabled : bool

このプロパティは、更新が有効になっているかどうかに関係なく保持されます

更新が有効なウィジェットはペイントイベントを受け取り、システムの背景色を持ちますが、無効なウィジェットはそうではありません。これはまた、更新が無効な場合、update() およびrepaint() を呼び出しても何の効果もないことを意味します。

デフォルトでは、このプロパティは `true` です。

setUpdatesEnabled() は通常、大規模な変更時の画面のちらつきを防ぐなど、短時間だけ更新を無効にするために使用されます。 Qt では、通常、ウィジェットによって画面のちらつきが発生することはありませんが、X11 では、ウィジェットが非表示になった際に、他のウィジェットに置き換えられる前に、サーバーが画面上の領域を消去してしまう場合があります。更新を無効にすることで、この問題は解決されます。

例:

setUpdatesEnabled(false);
bigVisualChanges();
setUpdatesEnabled(true);

ウィジェットを無効にすると、そのすべての子ウィジェットも暗黙的に無効になります。ウィジェットを有効にすると、最上位のウィジェットや明示的に無効にされたウィジェットを除く、すべての子ウィジェットが有効になります。更新を再度有効にすると、そのウィジェットに対してupdate()が暗黙的に呼び出されます。

アクセス関数:

bool updatesEnabled() const
void setUpdatesEnabled(bool enable)

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

visible : bool

このプロパティは、ウィジェットが表示されているかどうかを表します

setVisible(true) またはshow() を呼び出すと、ウィンドウに至るまでのすべての親ウィジェットが表示されている場合に、そのウィジェットが表示状態になります。 祖先ウィジェットのいずれかが非表示の場合、そのウィジェットはすべての祖先ウィジェットが表示されるまで表示されません。サイズや位置が変更された場合、Qtはウィジェットが表示される直前に、移動およびサイズ変更イベントがウィジェットに送信されることを保証します。ウィジェットのサイズがまだ変更されていない場合、QtはadjustSize() を使用して、ウィジェットのサイズを適切なデフォルト値に調整します。

setVisible(false) またはhide() を呼び出すと、ウィジェットが明示的に非表示になります。明示的に非表示にされたウィジェットは、たとえすべての祖先ウィジェットが表示状態になっても、明示的に表示しない限り、決して表示状態にはなりません。

ウィジェットは、その可視状態が変化した際に、showイベントおよびhideイベントを受け取ります。hideイベントとshowイベントの間は、ユーザーへの情報の準備や表示にCPUサイクルを浪費する必要はありません。たとえば、動画アプリケーションでは、単に新しいフレームの生成を停止するだけで済みます。

画面上の他のウィンドウによってたまたま隠れてしまっているウィジェットも、表示されているものとみなされます。これは、アイコン化されたウィンドウや、別の仮想デスクトップ上に存在するウィンドウ(この概念をサポートしているプラットフォームの場合)にも同様に当てはまります。 ウィジェットは、ウィンドウシステムによってマッピング状態が変更された際に、自発的な表示および非表示イベントを受け取ります。例えば、ユーザーがウィンドウを最小化した際には自発的な非表示イベントが、ウィンドウが再び復元された際には自発的な表示イベントが発生します。

setVisible() 関数を再実装する必要はほとんどありません。ウィジェットが表示される前に設定を変更する必要がある場合は、代わりにshowEvent() を使用してください。遅延初期化を行う必要がある場合は、event() 関数に送信されるポーランド式イベントを使用してください。

関連関数:

bool isVisible() const
virtual void setVisible(bool visible)

show()、hide()、isHidden()、isVisibleTo()、isMinimized()、showEvent()、およびhideEvent()も参照してください 。

whatsThis : QString

このプロパティには、ウィジェットの「これは何?」ヘルプテキストが格納されます。

デフォルトでは、このプロパティには空の文字列が格納されます。

アクセス関数:

QString whatsThis() const
void setWhatsThis(const QString &)

関連項目: QWhatsThis 、QWidget::toolTip 、およびQWidget::statusTip 。

[read-only] width : int

このプロパティには、ウィンドウの枠を除いたウィジェットの幅が格納されます

ウィンドウのジオメトリに関する概要については、「Window Geometry」のドキュメントを参照してください。

注: マルチスクリーン環境において、この関数を画面の幅を算出するために使用しないでください 。詳細については、QScreen を参照してください。

デフォルトでは、このプロパティには、ユーザーのプラットフォームおよび画面のジオメトリに依存する値が格納されます。

アクセス関数:

int width() const

関連項目: geometry 、height 、およびsize 。

windowFilePath : QString

このプロパティは、ウィジェットに関連付けられたファイルパスを保持します

このプロパティはウィンドウに対してのみ意味を持ちます。これは、ファイルパスをウィンドウに関連付けます。ファイルパスを設定したが、ウィンドウのタイトルを設定していない場合、QtはQFileInfo::fileName() を使用して取得した、指定されたパスのファイル名をウィンドウのタイトルとして設定します。

ウィンドウタイトルが任意の時点で設定されている場合、ウィンドウタイトルが優先され、ファイルパスの文字列の代わりにウィンドウタイトルが表示されます。

さらに、macOS では、ファイルパスが存在することを前提として、ウィンドウのプロキシアイコンを設定するという追加の利点があります。

ファイルパスが設定されていない場合、このプロパティには空の文字列が含まれます。

デフォルトでは、このプロパティには空の文字列が含まれます。

アクセス関数:

QString windowFilePath() const
void setWindowFilePath(const QString &filePath)

windowTitle およびwindowIconも参照してください 。

windowFlags : Qt::WindowFlags

ウィンドウフラグは、型(例:Qt::Dialog )と、ウィンドウシステムに対する0個以上のヒント(例:Qt::FramelessWindowHint )の組み合わせです。

ウィジェットのタイプがQt::Widget またはQt::SubWindow であり、ウィンドウ(Qt::Window 、Qt::Dialog など)になった場合、そのウィジェットはデスクトップ上の (0, 0) の位置に配置されます。ウィジェットがウィンドウであり、Qt::Widget またはQt::SubWindow になった場合、そのウィジェットは親ウィジェットを基準とした (0, 0) の位置に配置されます。

注:この関数は 、ウィンドウのフラグを変更する際にsetParent()を呼び出し、ウィジェットを非表示にします。ウィジェットを再び表示させるには、show()を呼び出す必要があります。

アクセス関数:

Qt::WindowFlags windowFlags() const
void setWindowFlags(Qt::WindowFlags type)

関連項目: windowType()、setWindowFlag()、および「ウィンドウフラグの例」。

windowIcon : QIcon

このプロパティは、ウィジェットのアイコンを保持します

このプロパティはウィンドウに対してのみ意味を持ちます。アイコンが設定されていない場合、windowIcon() はアプリケーションアイコン (QApplication::windowIcon()) を返します。

注: macOSでは 、ウィンドウアイコンはアクティブなドキュメントを表しており、setWindowFilePath を使用してファイルパスも設定されていない限り表示されません。

アクセス関数:

QIcon windowIcon() const
void setWindowIcon(const QIcon &icon)

Notifierシグナル:

void windowIconChanged(const QIcon &icon)

関連項目: windowTitle およびsetWindowFilePath 。

windowModality : Qt::WindowModality

このプロパティは、モーダルウィジェットによってブロックされるウィンドウを指定します

このプロパティはウィンドウに対してのみ意味を持ちます。モーダルウィジェットは、他のウィンドウ内のウィジェットが入力を受け取れないようにします。このプロパティの値は、ウィジェットが表示されている際にどのウィンドウをブロックするかを制御します。ウィンドウが表示されている状態でこのプロパティを変更しても効果はありません。まずウィジェットをhide()で非表示にし、その後show()で再度表示する必要があります。

デフォルトでは、このプロパティは `Qt::NonModal` に設定されています。

アクセス関数:

Qt::WindowModality windowModality() const
void setWindowModality(Qt::WindowModality windowModality)

関連項目: isWindow()、QWidget::modal 、およびQDialog 。

windowModified : bool

このプロパティは、ウィンドウに表示されているドキュメントに未保存の変更があるかどうかを示します

「変更済みウィンドウ」とは、内容が変更されているがディスクには保存されていないウィンドウのことです。このフラグの効果はプラットフォームによって異なります。macOS では閉じるボタンの外観が変更され、その他のプラットフォームではウィンドウのタイトルに「*」(アスタリスク)が表示されます。

ウィンドウのタイトルには、'*' が表示される位置を示す「[*]」というプレースホルダーを含める必要があります。通常、これはファイル名の直後に表示されます(例:「document1.txt[*] - テキストエディタ」)。ウィンドウが変更されていない場合、このプレースホルダーは単に削除されます。

なお、ウィジェットが「変更済み」に設定されると、そのすべての親ウィジェットも「変更済み」に設定されます。ただし、ウィジェットに対してsetWindowModified(false) を呼び出した場合、親ウィジェットの他の子ウィジェットが変更されている可能性があるため、この変更は親ウィジェットには伝播しません。

アクセス関数:

bool isWindowModified() const
void setWindowModified(bool)

windowTitleも参照してください 。

windowOpacity : double

このプロパティは、ウィンドウの不透明度を指定します。

不透明度の有効な範囲は、1.0(完全に不透明)から 0.0(完全に透明)までです。

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

この機能は、Composite 拡張機能をサポートする Embedded Linux、macOS、Windows、および X11 プラットフォームで利用可能です。

注: X11では 、コンポジットマネージャが実行されている必要があり、使用しているウィンドウマネージャが X11 独自の _NET_WM_WINDOW_OPACITY アトムをサポートしている必要があります。

警告: このプロパティを 不透明から透明に変更すると 、ウィンドウが正しく表示される前に処理が必要なペイントイベントが発生する可能性があります。これは主に、QScreen::grabWindow() の使用に影響します。また、半透明のウィンドウは、不透明なウィンドウに比べて更新やサイズ変更が著しく遅くなる点にも注意してください。

アクセス関数:

qreal windowOpacity() const
void setWindowOpacity(qreal level)

関連項目: setMask()。

windowTitle : QString

このプロパティには、ウィンドウのタイトル(キャプション)が格納されます。

このプロパティは、ウィンドウやダイアログなどの最上位ウィジェットに対してのみ意味を持ちます。キャプションが設定されていない場合、タイトルはwindowFilePath に基づいて決定されます。これらがいずれも設定されていない場合、タイトルは空の文字列となります。

windowModified の仕組みを使用する場合、ウィンドウのタイトルには「[*]」というプレースホルダーを含める必要があります。これは、「*」が表示されるべき位置を示します。 通常、このプレースホルダーはファイル名の直後に配置されます(例: 「document1.txt[*] - Text Editor」)。windowModified プロパティがfalse (デフォルト)に設定されている場合、このプレースホルダーは単に削除されます。

一部のデスクトッププラットフォーム(Windows や Unix を含む)では、設定されている場合、ウィンドウタイトルの末尾にアプリケーション名(QGuiApplication::applicationDisplayName から取得)が追加されます。これは QPA プラグインによって行われるため、ユーザーには表示されますが、windowTitle 文字列の一部ではありません。

アクセス関数:

QString windowTitle() const
void setWindowTitle(const QString &)

Notifierシグナル:

void windowTitleChanged(const QString &title)

windowIcon 、windowModified 、およびwindowFilePathも参照してください 。

[read-only] x : int

このプロパティは、ウィンドウの枠を含めた親ウィジェットに対する、そのウィジェットの x 座標を保持します

ウィンドウのジオメトリに関する概要については、「Window Geometry」のドキュメントを参照してください。

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

アクセス関数:

int x() const

frameGeometry 、y 、およびposも参照してください 。

[read-only] y : int

このプロパティは、親ウィジェットを基準とし、ウィンドウ枠を含めたウィジェットの y 座標を保持します

ウィンドウのジオメトリに関する概要については、「Window Geometry」のドキュメントを参照してください。

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

アクセス関数:

int y() const

frameGeometry 、x 、およびposも参照してください 。

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

[explicit] QWidget::QWidget(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())

parent の子となるウィジェットを構築し、ウィジェットのフラグをf に設定します。

parent がnullptr の場合、新しいウィジェットはウィンドウとなります。parent が別のウィジェットである場合、このウィジェットはparent 内の子ウィンドウとなります。新しいウィジェットは、そのparent が削除されると削除されます。

ウィジェットフラグ引数f は通常0ですが、ウィンドウのフレームをカスタマイズするために設定することもできます(つまり、parent はnullptr でなければなりません)。フレームをカスタマイズするには、window flags のいずれかのビット単位のOR演算で構成された値を使用します。

すでに表示されているウィジェットに子ウィジェットを追加する場合、その子ウィジェットを表示させるには、明示的に表示する必要があります。

X11版のQtでは、すべてのシステムでスタイルフラグのすべての組み合わせを反映できない場合があることに注意してください。これは、X11上ではQtがウィンドウマネージャに要求することしかできず、ウィンドウマネージャがアプリケーションの設定を上書きできるためです。Windows上では、Qtは任意のフラグを設定できます。

windowFlagsも参照してください 。

[virtual noexcept] QWidget::~QWidget()

ウィジェットを破棄します。

まず、このウィジェットのすべての子ウィジェットが削除されます。このウィジェットがメインウィジェットである場合、アプリケーションは終了します。

[virtual protected] void QWidget::actionEvent(QActionEvent *event)

このイベントハンドラは、ウィジェットのアクションが変更されるたびに、指定されたevent を引数として呼び出されます。

addAction()、insertAction()、removeAction()、actions()、およびQActionEventも参照してください 。

QList<QAction *> QWidget::actions() const

このウィジェットのアクションのリスト(空の場合もある)を返します。

contextMenuPolicy 、insertAction()、およびremoveAction()も参照してください 。

void QWidget::activateWindow()

このウィジェットを含む最上位のウィジェットをアクティブなウィンドウに設定します。

アクティブなウィンドウとは、表示されており、キーボードの入力フォーカスを持ち、最上位にあるウィンドウのことです。

この関数は、トップレベルウィンドウのタイトルバーをマウスでクリックした場合と同じ操作を実行します。X11 では、結果はウィンドウマネージャに依存します。ウィンドウを最前面に配置したい場合は、raise() も呼び出す必要があります。なお、ウィンドウが表示されている必要があります。そうでない場合、activateWindow() は効果を発揮しません。

Windows では、アプリケーションが現在アクティブでない状態でこの関数を呼び出しても、そのウィンドウをアクティブにはしません。代わりに、タスクバー上のエントリの色を変更して、ウィンドウに何らかの変更があったことを示します。これは、Microsoft が、アプリケーションがユーザーが別のアプリケーションで行っている操作を中断することを許可していないためです。

isActiveWindow()、window()、およびshow()も参照してください 。

void QWidget::addAction(QAction *action)

アクション「action 」を、このウィジェットのアクション一覧に追加します。

すべての QWidget にはQActionのリストがあります。ただし、それらはグラフィカルにさまざまな方法で表現されることがあります。QAction リスト(actions() によって返される)のデフォルトの用途は、コンテキストQMenu を作成することです。

QWidget には、各アクションが 1 つずつしか存在してはならず、すでに存在するアクションを追加しても、そのアクションがウィジェット内に 2 回存在することにはなりません。

action の所有権は、このQWidget には引き継がれません。

removeAction()、insertAction()、actions()、およびQMenuも参照してください 。

[since 6.3] QAction *QWidget::addAction(const QString &text)

[since 6.3] QAction *QWidget::addAction(const QIcon &icon, const QString &text)

[since 6.3] QAction *QWidget::addAction(const QString &text, const QKeySequence &shortcut)

[since 6.3] QAction *QWidget::addAction(const QIcon &icon, const QString &text, const QKeySequence &shortcut)

これらの便利関数は、テキスト「text 」、アイコン「icon 」、およびショートカット「shortcut 」(存在する場合)を持つ新しいアクションを作成します。

これらの関数は、新しく作成されたアクションをウィジェットのアクションリストに追加し、それを返します。

QWidget は、返されたQAction の所有権を取得します。

これらの関数は Qt 6.3 で導入されました。

[since 6.3] template <typename... Args, typename = QWidget::compatible_action_slot_args<Args...>> QAction *QWidget::addAction(const QString &text, Args &&... args)

[since 6.3] template <typename... Args, typename = QWidget::compatible_action_slot_args<Args...>> QAction *QWidget::addAction(const QIcon &icon, const QString &text, Args &&... args)

[since 6.3] template <typename... Args, typename = QWidget::compatible_action_slot_args<Args...>> QAction *QWidget::addAction(const QString &text, const QKeySequence &shortcut, Args &&... args)

[since 6.3] template <typename... Args, typename = QWidget::compatible_action_slot_args<Args...>> QAction *QWidget::addAction(const QIcon &icon, const QString &text, const QKeySequence &shortcut, Args &&... args)

これらの便利関数は、テキストtext 、アイコンicon 、およびショートカットshortcut (存在する場合)を持つ新しいアクションを作成します。

このアクションの `triggered()` シグナルは、あたかも `QObject::connect(action, &QAction::triggered, args...)` が呼び出されたかのように接続され、`Qt::ConnectionType` を含む `args` を完全に転送します。

この関数は、新しく作成されたアクションをウィジェットのアクション一覧に追加し、それを返します。

QWidget は、返されたQAction の所有権を取得します。

これらの関数は Qt 6.3 で導入されました。

[since 6.3] QAction *QWidget::addAction(const QString &text, const QObject *receiver, const char *member, Qt::ConnectionType type = Qt::AutoConnection)

[since 6.3] QAction *QWidget::addAction(const QIcon &icon, const QString &text, const QObject *receiver, const char *member, Qt::ConnectionType type = Qt::AutoConnection)

[since 6.3] QAction *QWidget::addAction(const QString &text, const QKeySequence &shortcut, const QObject *receiver, const char *member, Qt::ConnectionType type = Qt::AutoConnection)

[since 6.3] QAction *QWidget::addAction(const QIcon &icon, const QString &text, const QKeySequence &shortcut, const QObject *receiver, const char *member, Qt::ConnectionType type = Qt::AutoConnection)

この便利関数は、テキスト「text 」、アイコン「icon 」、およびショートカット「shortcut 」(存在する場合)を持つ新しいアクションを作成します。

このアクションの `triggered()` シグナルは、`receiver` の `member ` スロットに接続されます。この関数は、新しく作成されたアクションをウィジェットのアクション一覧に追加し、それを返します。

QWidget は、返された `QAction` の所有権を取得します。

これらの関数は Qt 6.3 で導入されました。

void QWidget::addActions(const QList<QAction *> &actions)

このウィジェットのアクション一覧に、actions を追加します。

removeAction()、QMenu 、およびaddAction()も参照してください 。

void QWidget::adjustSize()

ウィジェットのサイズを、その内容に合わせて調整します。

この関数は、sizeHint() が有効な場合(つまり、サイズヒントの幅と高さが 0 以上である場合)にそれを使用します。そうでない場合は、すべての子ウィジェットを覆う子矩形(すべての子ウィジェットの矩形の和集合)をサイズとして設定します。

ウィンドウの場合、画面サイズも考慮されます。sizeHint() が (200, 100) 未満で、サイズポリシーがexpanding の場合、ウィンドウのサイズは少なくとも (200, 100) になります。ウィンドウの最大サイズは、画面の幅と高さの 2/3 です。

sizeHint() およびchildrenRect()も参照してください 。

QPalette::ColorRole QWidget::backgroundRole() const

ウィジェットの背景ロールを返します。

背景ロールは、ウィジェットのpalette から、背景の描画に使用されるブラシを定義します。

明示的な背景ロールが設定されていない場合、ウィジェットは親ウィジェットの背景ロールを継承します。

setBackgroundRole() およびforegroundRole()も参照してください 。

QBackingStore *QWidget::backingStore() const

このウィジェットが描画されるQBackingStore を返します。

[virtual protected] void QWidget::changeEvent(QEvent *event)

このイベントハンドラは、状態の変化を処理するように再実装することができます。

このイベントで変更される状態は、提供されるevent を通じて取得できます。

変更イベントには、QEvent::ToolBarChange 、QEvent::ActivationChange 、QEvent::EnabledChange 、QEvent::FontChange 、QEvent::StyleChange 、QEvent::PaletteChange 、QEvent::WindowTitleChange 、QEvent::IconTextChange 、QEvent::ModifiedChange 、QEvent::MouseTrackingChange 、QEvent::ParentChange 、QEvent::WindowStateChange 、QEvent::LanguageChange 、QEvent::LocaleChange 、QEvent::LayoutDirectionChange 、QEvent::ReadOnlyChange などがあります。

QWidget *QWidget::childAt(int x, int y) const

ウィジェットの座標系において、位置 (x,y) にある表示中の子ウィジェットを返します。指定された位置に表示中の子ウィジェットが存在しない場合、この関数はnullptr を返します。

QWidget *QWidget::childAt(const QPoint &p) const

ウィジェット自身の座標系において、ポイントp にある表示されている子ウィジェットを返します。

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

[since 6.8] QWidget *QWidget::childAt(const QPointF &p) const

ウィジェット自身の座標系において、座標 (p ) にある表示されている子ウィジェットを返します。

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

この関数は Qt 6.8 で導入されました。

void QWidget::clearFocus()

ウィジェットからキーボード入力のフォーカスを解除します。

ウィジェットがアクティブなフォーカスを持っている場合、このウィジェットに対してfocus out event が送信され、フォーカスを失ったことが通知されます。

このウィジェットがキーボード入力フォーカスを取得するには、フォーカス設定を有効にする必要があります。つまり、setFocusPolicy() を呼び出す必要があります。

hasFocus()、setFocus()、focusInEvent()、focusOutEvent()、setFocusPolicy()、およびQApplication::focusWidget()も参照してください 。

void QWidget::clearMask()

setMask() で設定されたマスクをすべて解除します。

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

[slot] bool QWidget::close()

このウィジェットを閉じます。ウィジェットが閉じられていた場合は `true ` を返し、そうでない場合は `false` を返します。

まず、ウィジェットに `QCloseEvent` を送信します。ウィジェットが `close` イベントを `accepts ` した場合、ウィジェットは `hidden ` になります。イベントを `ignores ` した場合は、何も起こりません。QWidget::closeEvent() のデフォルトの実装は、`close` イベントを受け入れます。

ウィジェットにQt::WA_DeleteOnClose フラグが設定されている場合、そのウィジェットも削除されます。ウィジェットが表示されているかどうかにかかわらず、close イベントがウィジェットに配信されます。

QGuiApplication::lastWindowClosed() シグナルは、Qt::WA_QuitOnClose 属性が設定されている、最後に表示されていたプライマリウィンドウ(つまり、親ウィンドウを持たないウィンドウ)が閉じられたときに発火します。デフォルトでは、スプラッシュスクリーン、ツールウィンドウ、ポップアップメニューなどの一時的なウィンドウを除くすべてのウィジェットに対して、この属性が設定されています。

[virtual protected] void QWidget::closeEvent(QCloseEvent *event)

このイベントハンドラは、Qtがウィンドウシステムからトップレベルウィジェットのウィンドウ閉じる要求を受け取った際に、指定されたevent を引数として呼び出されます。

デフォルトでは、このイベントは受け入れられ、ウィジェットは閉じられます。この関数を再実装することで、ウィジェットがウィンドウの閉じる要求に応答する方法を変更できます。たとえば、すべてのイベントで `ignore()` を呼び出すことで、ウィンドウが閉じられるのを防ぐことができます。

メインウィンドウを持つアプリケーションでは、通常、この関数を再実装して、ユーザーの作業が保存されているかどうかを確認し、閉じる前に確認を求めるようにしています。

event()、hide()、close()、およびQCloseEventも参照してください 。

QMargins QWidget::contentsMargins() const

contentsMargins 関数は、ウィジェットのコンテンツの余白を返します。

setContentsMargins() およびcontentsRect()も参照してください 。

QRect QWidget::contentsRect() const

ウィジェットのマージン内の領域を返します。

setContentsMargins() およびcontentsMargins()も参照してください 。

[virtual protected] void QWidget::contextMenuEvent(QContextMenuEvent *event)

イベントevent に対応するこのイベントハンドラは、サブクラスで再実装することで、ウィジェットのコンテキストメニューイベントを受け取ることができます。

このハンドラは、ウィジェットのcontextMenuPolicy がQt::DefaultContextMenu のときに呼び出されます。

デフォルトの実装では、コンテキストイベントは無視されます。詳細については、QContextMenuEvent のドキュメントを参照してください。

event()、QContextMenuEvent 、およびcustomContextMenuRequested()も参照してください 。

[protected] void QWidget::create(WId window = 0, bool initializeWindow = true, bool destroyOldWindow = true)

新しいウィジェットウィンドウを作成します。

Qt 5 では、window 、initializeWindow 、およびdestroyOldWindow のパラメータは無視されます。代わりに、外部ウィンドウをラップするQWindow を作成するにはQWindow::fromWinId() を使用し、それをQWidget::createWindowContainer() に渡してください。

createWindowContainer() およびQWindow::fromWinId()も参照してください 。

[static] QWidget *QWidget::createWindowContainer(QWindow *window, QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())

「window 」を「QWidget 」ベースのアプリケーションに組み込むことを可能にする「QWidget 」を作成します。

ウィンドウコンテナは、parent の子として、ウィンドウフラグflags を指定して作成されます。

ウィンドウがコンテナに埋め込まれると、コンテナがウィンドウのジオメトリと可視性を制御します。埋め込まれたウィンドウに対して、QWindow::setGeometry()、QWindow::show()、またはQWindow::hide() を明示的に呼び出すことは推奨されません。

コンテナはwindow の所有権を引き継ぎます。QWindow::setParent()を呼び出すことで、ウィンドウをウィンドウコンテナから削除できます。

ウィンドウコンテナは、その親であるトップレベルウィンドウに対して、ネイティブの子ウィンドウとしてアタッチされます。ウィンドウコンテナが `QAbstractScrollArea ` または `QMdiArea` の子として使用される場合、このユースケースにおいて適切なスタック順とクリッピングが行われるよう、親チェーン内のすべてのウィジェットに対して `native window ` が作成されます。 ウィンドウコンテナ用にネイティブウィンドウを作成することも、適切な重ね合わせとクリッピングを可能にします。これは、ウィンドウコンテナを表示する前に実行する必要があります。ネイティブの子ウィンドウが多数あるアプリケーションでは、パフォーマンスの問題が発生する可能性があります。

ウィンドウコンテナには、いくつかの既知の制限事項があります:

  • 重ね合わせ順序:埋め込まれたウィンドウは、不透明なボックスとしてウィジェット階層の上に重ねられます。複数のウィンドウコンテナインスタンスが重なった場合の重ね合わせ順序は未定義です。
  • レンダリングの統合:ウィンドウコンテナは、QGraphicsProxyWidget 、QWidget::render()、または類似の機能とは相互運用しません。
  • フォーカスの処理:ウィンドウコンテナのインスタンスには任意のフォーカスポリシーを設定することが可能であり、QWindow::requestActivate() の呼び出しを通じてウィンドウにフォーカスを委譲します。ただし、QWindow インスタンスから通常のフォーカスチェーンに戻るかどうかは、QWindow インスタンスの実装自体に依存します。また、QWindow::requestActivate() が実際にウィンドウにフォーカスを与えるかどうかは、プラットフォームに依存します。

    Qt Quick ベースのウィンドウを埋め込む場合、Qt はタブキーの押下によって埋め込まれた QML ウィンドウへのフォーカスの移行および切り替えを自動的に保証し、ウィンドウコンテナチェーン内の次の、または前のフォーカス可能なオブジェクトへフォーカスが移動できるようにします。

  • QWidget ベースのアプリケーションで多数のウィンドウコンテナインスタンスを使用すると、アプリケーション全体のパフォーマンスに大きな悪影響を及ぼす可能性があります。

注: window がウィジェットに属している場合 (つまり、windowHandle()の呼び出しによってwindow が受け取られた場合 )、コンテナは作成されません。その代わりに、この関数は、parent への親の変更を行った後、ウィジェット自体を返します。コンテナは作成されないため、flags は無視されます。 つまり、window がウィジェットに属している場合は、この関数を使用する代わりに、そのウィジェットをparent に再親付けすることを検討してください。

[signal] void QWidget::customContextMenuRequested(const QPoint &pos)

このシグナルは、ウィジェットのcontextMenuPolicy がQt::CustomContextMenu であり、ユーザーがウィジェット上でコンテキストメニューを要求した際に発火します。位置pos は、ウィジェットが受信するコンテキストメニューイベントの位置です。通常、これはウィジェット座標系での位置です。この規則の例外は、QAbstractScrollArea およびそのサブクラスであり、これらはコンテキストメニューイベントをviewport()の座標にマッピングします。

mapToGlobal()、QMenu 、およびcontextMenuPolicyも参照してください 。

[protected] void QWidget::destroy(bool destroyWindow = true, bool destroySubWindows = true)

ウィンドウシステムのリソースを解放します。destroyWindow がtrueの場合、ウィジェットのウィンドウを破棄します。

destroy() は、すべての子ウィジェットに対して再帰的に自身を呼び出し、destroyWindow パラメータとしてdestroySubWindows を渡します。子ウィジェットの破棄をより細かく制御するには、まず子ウィジェットを選択的に破棄してください。

この関数は通常、QWidget のデストラクタから呼び出されます。

[virtual protected] void QWidget::dragEnterEvent(QDragEnterEvent *event)

このイベントハンドラは、ドラッグ操作が行われている最中にマウスがこのウィジェットに入ってきたときに呼び出されます。イベントはevent パラメータとして渡されます。

このイベントを無視した場合、ウィジェットにはdrag move events が渡されません。

アプリケーションでドラッグ&ドロップ機能を実装する方法の概要については、「ドラッグ&ドロップ」のドキュメントを参照してください。

「 QDrag 」および「QDragEnterEvent 」も参照してください 。

[virtual protected] void QWidget::dragLeaveEvent(QDragLeaveEvent *event)

このイベントハンドラは、ドラッグ操作が行われている最中にマウスがこのウィジェットから離れたときに呼び出されます。このイベントは、event パラメータとして渡されます。

アプリケーションでドラッグ&ドロップ機能を実装する方法の概要については、「ドラッグ&ドロップ」のドキュメントを参照してください。

「 QDrag 」および「QDragLeaveEvent 」も参照してください 。

[virtual protected] void QWidget::dragMoveEvent(QDragMoveEvent *event)

このイベントハンドラは、ドラッグ操作が進行中で、かつ以下のいずれかの条件が発生した際に呼び出されます。カーソルがこのウィジェット内に入った場合、カーソルがこのウィジェット内で移動した場合、またはこのウィジェットがフォーカスを保持している間にキーボードの修飾キーが押された場合です。イベントはevent パラメータを通じて渡されます。

アプリケーションでドラッグ&ドロップ機能を実装する方法の概要については、「ドラッグ&ドロップ」のドキュメントを参照してください。

QDrag およびQDragMoveEventも参照してください 。

[virtual protected] void QWidget::dropEvent(QDropEvent *event)

このイベントハンドラは、このウィジェット上でドラッグされたオブジェクトがドロップされたときに呼び出されます。イベントはevent パラメータとして渡されます。

アプリケーションでドラッグ&ドロップ機能を実装する方法の概要については、「ドラッグ&ドロップ」のドキュメントを参照してください。

「 QDrag 」および「QDropEvent 」も参照してください 。

WId QWidget::effectiveWinId() const

ウィジェットの有効なウィンドウシステム識別子、すなわちネイティブの親ウィジェットのウィンドウシステム識別子を返します。

ウィジェットがネイティブである場合、この関数はネイティブウィジェットIDを返します。それ以外の場合は、最初のネイティブ親ウィジェット、すなわちこのウィジェットを含む最上位のウィジェットのウィンドウIDが返されます。

注: この値は実行時に変更される可能性があるため、保存しないことをお勧めします 。

関連項目: ` nativeParentWidget()`。

void QWidget::ensurePolished() const

ウィジェットとその子要素が、QStyle によって適切に整えられていること(つまり、適切なフォントとパレットが設定されていること)を確認します。

QWidget この関数は、ウィジェットが完全に構築された後、初めて表示される前に呼び出されます。 何らかの処理を行う前にウィジェットがポリッシュ済みであることを確実にしたい場合は、この関数を呼び出すことができます。例えば、ウィジェットのsizeHint()の再実装において、正しいフォントサイズが必要になる場合があります。なお、この関数はsizeHint()のデフォルト実装から呼び出されることに注意してください。

ポリッシングは、すべてのコンストラクタ(基底クラスおよびサブクラスのもの)が呼び出された後に実行されなければならない最終的な初期化に役立ちます。

ウィジェットのポリッシング時に設定を変更する必要がある場合は、event() を再実装し、QEvent::Polish イベントタイプを処理してください。

注:この関数は、他の const 関数(例:sizeHint ())から呼び出せるように、const として宣言されています。

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

[virtual protected] void QWidget::enterEvent(QEnterEvent *event)

このイベントハンドラは、サブクラスで再実装することで、event パラメータを通じて渡されるウィジェットのenterイベントを受け取ることができます。

マウスカーソルがウィジェット内に入ったときに、ウィジェットにイベントが送信されます。

leaveEvent()、mouseMoveEvent()、およびevent()も参照してください 。

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

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

これはメインのイベントハンドラであり、event イベントを処理します。この関数をサブクラスで再実装することも可能ですが、代わりに専用のイベントハンドラのいずれかを使用することを推奨します。

キーの押下および離しイベントは、他のイベントとは異なる扱いとなります。event() は Tab キーおよび Shift+Tab キーの押下を検出し、フォーカスを適切に移動しようとします。フォーカスを移動させる対象となるウィジェットが存在しない場合(または押されたキーが Tab キーまたは Shift+Tab キーでない場合)、event() はkeyPressEvent() を呼び出します。

マウスおよびタブレットイベントの処理も若干特殊です。ウィジェットがenabled である場合にのみ、event()はmousePressEvent()などの専用ハンドラを呼び出します。そうでない場合は、イベントを破棄します。

この関数は、イベントが認識された場合は `true ` を返し、そうでない場合は `false` を返します。認識されたイベントが受け入れられた場合(QEvent::accepted を参照)、親ウィジェットへのイベント伝播などのそれ以降の処理は停止します。

関連項目: closeEvent(),focusInEvent(),focusOutEvent(),enterEvent(),keyPressEvent(),keyReleaseEvent(),leaveEvent(),mouseDoubleClickEvent(),mouseMoveEvent(),mousePressEvent(),mouseReleaseEvent(),moveEvent(),paintEvent(),resizeEvent(),QObject::event(),QObject::timerEvent().

[static] QWidget *QWidget::find(WId id)

ウィンドウ識別子/ハンドルid を持つウィジェットへのポインタを返します。

ウィンドウ識別子の型は、基盤となるウィンドウシステムによって異なります。具体的な定義については、qwindowdefs.h を参照してください。この識別子を持つウィジェットが存在しない場合、nullptr が返されます。

[virtual protected] void QWidget::focusInEvent(QFocusEvent *event)

このイベントハンドラは、サブクラスで再実装することで、ウィジェットのキーボードフォーカスイベント(フォーカス取得)を受け取ることができます。このイベントは、event パラメータを通じて渡されます

通常、ウィジェットがフォーカスイベントを受信するには、setFocusPolicy() をQt::NoFocus 以外の値に設定する必要があります。(なお、アプリケーションプログラマは、通常はフォーカスを受け付けないウィジェットであっても、任意のウィジェットに対してsetFocus() を呼び出すことができます。)

デフォルトの実装では、ウィジェットが更新されます(focusPolicy() を指定していないウィンドウを除く)。

focusOutEvent()、setFocusPolicy()、keyPressEvent()、keyReleaseEvent()、event()、およびQFocusEventも参照してください 。

[protected] bool QWidget::focusNextChild()

Tab に応じて、キーボードフォーカスを当てる新しいウィジェットを検索し、新しいウィジェットが見つかった場合は `true ` を返し、見つからなかった場合は `false` を返します。

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

[virtual protected] bool QWidget::focusNextPrevChild(bool next)

TabキーおよびShift+Tabキーの操作に応じて、キーボードフォーカスを移す新しいウィジェットを検索し、新しいウィジェットが見つかった場合はtrue を、見つからなかった場合はfalseを返します。

next がtrueの場合、この関数は前方へ検索し、next がfalseの場合は後方へ検索します。

場合によっては、この関数を再実装したくなることもあるでしょう。たとえば、Web ブラウザでは、「現在アクティブなリンク」を前または後ろに移動させるためにこの関数を再実装し、「ページ」上の最後のリンクまたは最初のリンクに到達した場合にのみ focusNextPrevChild() を呼び出すことがあります。

子ウィジェットは親ウィジェットに対して focusNextPrevChild() を呼び出しますが、フォーカスをどこへ移動させるかを決定するのは、その子ウィジェットを含むウィンドウのみです。したがって、あるオブジェクトに対してこの関数を再実装することで、すべての子ウィジェットのフォーカス移動を制御できるようになります。

focusNextChild() およびfocusPreviousChild()も参照してください 。

[virtual protected] void QWidget::focusOutEvent(QFocusEvent *event)

このイベントハンドラは、サブクラスで再実装することで、ウィジェットのキーボードフォーカスイベント(フォーカス喪失)を受け取ることができます。イベントはevent パラメータを通じて渡されます。

通常、ウィジェットがフォーカスイベントを受信するには、setFocusPolicy() をQt::NoFocus 以外の値に設定する必要があります。(なお、アプリケーションプログラマは、通常はフォーカスを受け付けないウィジェットであっても、任意のウィジェットに対してsetFocus() を呼び出すことができます。)

デフォルトの実装では、ウィジェットが更新されます(focusPolicy() を指定していないウィンドウを除く)。

focusInEvent()、setFocusPolicy()、keyPressEvent()、keyReleaseEvent()、event()、およびQFocusEventも参照してください 。

[protected] bool QWidget::focusPreviousChild()

Shift+Tab に適した、キーボードフォーカスを与える新しいウィジェットを検索し、新しいウィジェットが見つかった場合は `true ` を返し、見つからなかった場合は `false` を返します。

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

QWidget *QWidget::focusProxy() const

フォーカスプロキシを返します。フォーカスプロキシが存在しない場合は、nullptr を返します。

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

QWidget *QWidget::focusWidget() const

setFocus が呼び出された、このウィジェットの最後の子ウィジェットを返します。最上位のウィジェットの場合、これはこのウィンドウがアクティブになった際にフォーカスを得るウィジェットとなります

これは、現在アクティブなウィンドウ内のフォーカス対象ウィジェットを返す `QApplication::focusWidget()` とは異なります。

QFontInfo QWidget::fontInfo() const

ウィジェットの現在のフォントに関する情報を返します。QFontInfo(widget->font()) と同等です。

font()、fontMetrics()、およびsetFont()も参照してください 。

QFontMetrics QWidget::fontMetrics() const

ウィジェットの現在のフォントのフォントメトリクスを返します。QFontMetrics(widget->font()) と同等です。

font()、fontInfo()、およびsetFont()も参照してください 。

QPalette::ColorRole QWidget::foregroundRole() const

前景ロールを返します。

フォアグラウンド・ロールは、ウィジェットのpalette から、フォアグラウンドの描画に使用される色を定義します。

明示的なフォアグラウンド・ロールが設定されていない場合、この関数はバックグラウンド・ロールと対照的なロールを返します。

setForegroundRole() およびbackgroundRole()も参照してください 。

[invokable] QPixmap QWidget::grab(const QRect &rectangle = QRect(QPoint(0, 0), QSize(-1, -1)))

指定されたrectangle によって制限されたピクマップにウィジェットを描画します。ウィジェットに子要素がある場合は、それらも適切な位置に描画されます。

無効なサイズの矩形が指定された場合(デフォルト)、ウィジェット全体が描画されます。

注:この関数は 、メタオブジェクトシステムを介して、またはQMLから呼び出すことができます。Q_INVOKABLE を参照してください。

関連項目: render() およびQPixmap 。

void QWidget::grabGesture(Qt::GestureType gesture, Qt::GestureFlags flags = Qt::GestureFlags())

指定されたgesture に対して、特定のflags を持つウィジェットを登録します。

ungrabGesture() およびQGestureEventも参照してください 。

void QWidget::grabKeyboard()

キーボード入力を取得します。

このウィジェットは、releaseKeyboard() が呼び出されるまで、すべてのキーボードイベントを受信します。他のウィジェットはキーボードイベントを一切受け取りません。マウスイベントには影響しません。マウスイベントもキャプチャしたい場合は、grabMouse() を使用してください。

フォーカスウィジェットは、キーボードイベントを受け取らない点を除き、影響を受けません。setFocus() は通常通りフォーカスを移動させますが、新しいフォーカスウィジェットがキーボードイベントを受け取るのは、releaseKeyboard() が呼び出された後になります。

現在、別のウィジェットがキーボード入力を取得している場合は、まずそのウィジェットの取得が解除されます。

releaseKeyboard()、grabMouse()、releaseMouse()、およびfocusWidget()も参照してください 。

void QWidget::grabMouse()

マウス入力を取得します。

このウィジェットは、releaseMouse()が呼び出されるまで、すべてのマウスイベントを受信します。他のウィジェットにはマウスイベントが一切届きません。キーボードイベントには影響しません。キーボードイベントをキャプチャしたい場合は、grabKeyboard()を使用してください。

警告: マウスをキャプチャするアプリケーションのバグにより 、ターミナルがフリーズすることが非常に頻繁にあります。この関数の使用には細心の注意を払い、デバッグ時には-nograb コマンドラインオプションの使用を検討してください。

Qt を使用する際、マウスをキャプチャする必要が生じることはほとんどありません。Qt は適切にマウスをキャプチャおよび解放するからです。特に、Qt はマウスボタンが押された際にマウスをキャプチャし、最後のボタンが解放されるまでその状態を維持します。

注: マウス入力をキャプチャできるのは、表示されているウィジェットのみです 。isVisible() がウィジェットに対してfalse を返した場合、そのウィジェットは grabMouse() を呼び出すことはできません。

注:Windowsでは 、grabMouse()はマウスがそのプロセスが所有するウィンドウ内にある場合にのみ機能します。macOSでは、grabMouse()はマウスがそのウィジェットのフレーム内にある場合にのみ機能します。

関連項目: releaseMouse()、grabKeyboard()、およびreleaseKeyboard()。

void QWidget::grabMouse(const QCursor &cursor)

マウス入力を取得し、カーソルの形状を変更します。

カーソルはcursor の形状になり(マウスのフォーカスが取得されている間)、releaseMouse()が呼び出されるまでは、このウィジェットのみがマウスイベントを受け取ります。

警告: マウス入力を取得すると 、ターミナルがロックされる可能性があります。

注: QWidget::grabMouse() 内の注記を参照してください 。

この関数は、QWidget::grabMouse() をオーバーロードします。

関連項目: releaseMouse()、grabKeyboard()、releaseKeyboard()、およびsetCursor()。

int QWidget::grabShortcut(const QKeySequence &key, Qt::ShortcutContext context = Qt::WindowShortcut)

Qtのショートカットシステムに、指定された「context 」内で指定された「key 」シーケンスを監視するショートカットを追加します。context が「Qt::ApplicationShortcut 」の場合、ショートカットはアプリケーション全体に適用されます。それ以外の場合は、このウィジェットに限定される(Qt::WidgetShortcut )か、ウィンドウ自体に限定される(Qt::WindowShortcut )のいずれかとなります。

同じkey シーケンスが複数のウィジェットによって取得されている場合、key シーケンスが発生すると、QEvent::Shortcut イベントが、適用されるすべてのウィジェットに対して非決定論的な順序で送信されますが、その際「ambiguous」フラグはtrueに設定されます。

警告: 通常、この関数を使用する必要はありません 。代わりに、必要なショートカットキーシーケンスで `QAction` を作成するか(同等のメニューオプションやツールバーボタンも必要な場合)、キーシーケンスのみが必要な場合は `QShortcut` を作成してください。QAction とQShortcut は、イベントフィルタリングをすべて自動的に処理し、ユーザーがキーシーケンスを実行したときにトリガーされるシグナルを提供するため、この低レベルの関数よりもはるかに使いやすくなっています。

releaseShortcut() およびsetShortcutEnabled()も参照してください 。

QGraphicsEffect *QWidget::graphicsEffect() const

graphicsEffect 関数は、ウィジェットのグラフィックエフェクトへのポインタを返します。

ウィジェットにGraphical Effectsがない場合、nullptr が返されます。

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

QGraphicsProxyWidget *QWidget::graphicsProxyWidget() const

グラフィックスビュー内の対応する埋め込みウィジェットに対するプロキシウィジェットを返します。それ以外の場合は、nullptr を返します。

QGraphicsProxyWidget::createProxyForChildWidget() およびQGraphicsScene::addWidget()も参照してください 。

[virtual] bool QWidget::hasHeightForWidth() const

ウィジェットの推奨高さがその幅に依存する場合は `true ` を返し、そうでない場合は `false` を返します。

[virtual] int QWidget::heightForWidth(int w) const

幅w が指定された場合、このウィジェットの推奨高さを返します。

このウィジェットにレイアウトが設定されている場合、デフォルトの実装はレイアウトの推奨高さを返します。レイアウトが設定されていない場合、デフォルトの実装は、推奨高さが幅に依存しないことを示す -1 を返します。

[slot] void QWidget::hide()

ウィジェットを非表示にします。この関数は、setVisible(false) と同等です。

注: QDialog またはそのサブクラスを操作していて、この関数の後に `show()`関数を呼び出した場合 、ダイアログは元の位置に表示されます。

関連項目: hideEvent()、isHidden()、show()、setVisible()、isVisible()、およびclose()を参照してください 。

[virtual protected] void QWidget::hideEvent(QHideEvent *event)

このイベントハンドラは、ウィジェットの非表示イベントを受け取るために、サブクラスで再実装することができます。イベントはevent パラメータを通じて渡されます。

非表示イベントは、ウィジェットが非表示になった直後にウィジェットに送信されます。

注:ウィジェットは、ウィンドウシステムによってマッピング状態が変更された際に、自動的な表示および非表示イベントを受け取ります。例えば、ユーザーがウィンドウを最小化した際には自動的な非表示イベントが、ウィンドウが再び復元された際には自動的な表示イベントが発生します。自動的な非表示イベントを受け取った後も、isVisible() の意味において、そのウィジェットは依然として表示されているものとみなされます。

visible 、event()、およびQHideEventも参照してください 。

[override virtual protected] void QWidget::initPainter(QPainter *painter) const

painter のペン、背景、フォントを、指定されたウィジェットのものと一致するように初期化します。この関数は、QWidget 上でペインターが開かれた際に自動的に呼び出されます。

[virtual protected] void QWidget::inputMethodEvent(QInputMethodEvent *event)

イベント「event 」に対するこのイベントハンドラは、サブクラスで再実装することで、入力メソッドの構成イベントを受け取ることができます。このハンドラは、入力メソッドの状態が変更された際に呼び出されます。

カスタムテキスト編集ウィジェットを作成する際は、入力メソッドイベントを受信するために、ウィンドウ属性 `Qt::WA_InputMethodEnabled ` を(関数 `setAttribute()` を使用して)明示的に設定する必要があることに注意してください。

デフォルトの実装では event->ignore() が呼び出され、これにより入力メソッドイベントが拒否されます。詳細については、QInputMethodEvent のドキュメントを参照してください。

event() およびQInputMethodEventも参照してください 。

[virtual] QVariant QWidget::inputMethodQuery(Qt::InputMethodQuery query) const

このメソッドは入力ウィジェットにのみ適用されます。入力メソッドが、周囲のテキストへの対応や再変換といった複雑な操作をサポートするために、ウィジェットのプロパティセットを取得する際に使用されます。

query どのプロパティを照会するかを指定します。

関連項目: inputMethodEvent()、QInputMethodEvent 、QInputMethodQueryEvent 、およびinputMethodHintsも参照してください 。

void QWidget::insertAction(QAction *before, QAction *action)

このウィジェットのアクション一覧に、アクション「action 」を「before 」の直前に挿入します。before がnullptr である場合、またはbefore がこのウィジェットに対して有効なアクションでない場合は、そのアクションを末尾に追加します。

QWidget には、各アクションが1つずつしか含まれてはなりません。

removeAction()、addAction()、QMenu 、contextMenuPolicy 、およびactions()も参照してください 。

void QWidget::insertActions(QAction *before, const QList<QAction *> &actions)

このウィジェットのアクション一覧に、アクション「actions 」を「before 」の前の位置に挿入します。before がnullptr である場合、またはbefore がこのウィジェットに対して有効なアクションでない場合は、そのアクションを末尾に追加します。

QWidget には、各アクションにつき最大1つまで含めることができます。

removeAction()、QMenu 、insertAction()、およびcontextMenuPolicyも参照してください 。

bool QWidget::isAncestorOf(const QWidget *child) const

このウィジェットが、指定されたchild の親(または祖父母など、どのレベルであっても)であり、かつ両方のウィジェットが同じウィンドウ内にある場合は、true を返します。それ以外の場合は、false を返します。

bool QWidget::isEnabledTo(const QWidget *ancestor) const

ancestor が有効な場合に、このウィジェットが有効になるのであればtrue を返し、そうでない場合はfalse を返します。

これは、ウィジェット自体も、ancestor までのすべての親( 自体は除く)も、明示的に無効化されていない場合に該当します。

isEnabledTo(0) は、このウィジェットまたはその祖先のいずれかが明示的に無効にされている場合、false を返します。

ここでいう「祖先」とは、同じウィンドウ内にある親ウィジェットを意味します。

したがって、isEnabledTo(0) は、親ウィンドウも考慮に入れるisEnabled() とは異なり、このウィジェットのウィンドウで処理を停止します。

setEnabled() およびenabledも参照してください 。

bool QWidget::isHidden() const

ウィジェットが非表示の場合は `true ` を返し、それ以外の場合は `false` を返します。

非表示のウィジェットは、show() が呼び出されたときにのみ表示されます。親ウィジェットが表示されても、自動的に表示されることはありません。

表示状態を確認するには、代わりに !isVisible() を使用してください(感嘆符に注意してください)。

isHidden() は !isVisible() を意味しますが、ウィジェットは「表示されていない」状態と「非表示」状態を同時に持つことがあります。これは、表示されていないウィジェットの子であるウィジェットの場合に当てはまります。

ウィジェットが非表示となるのは、以下の場合です:

  • 独立したウィンドウとして作成された場合、
  • 表示されているウィジェットの子として作成された場合、
  • hide() またはsetVisible(false) が呼び出された場合。

bool QWidget::isVisibleTo(const QWidget *ancestor) const

ancestor が表示された場合に、このウィジェットが表示されるようになる場合は `true ` を返し、そうでない場合は `false` を返します。

この条件が真となるのは、ウィジェット自体も、ancestor までの親ウィジェット( を除く)も、明示的に非表示にされていない場合です。

この関数は、ウィジェットが画面上の他のウィンドウによって隠されている場合でも、そのウィジェットや他のウィンドウを移動すれば物理的に表示される可能性がある場合は、依然として true を返します。

isVisibleTo(0) はisVisible() と同じです。

show()、hide()、およびisVisible()も参照してください 。

bool QWidget::isWindow() const

ウィジェットが独立したウィンドウである場合はtrue を返し、そうでない場合はfalse を返します。

ウィンドウとは、視覚的に他のウィジェットの子ではないウィジェットであり、通常はフレームとwindow title を持っています。

ウィンドウは `parent widget` を持つことができます。その場合、親ウィンドウとグループ化され、親が削除されると一緒に削除され、親が最小化されると一緒に最小化されます。また、ウィンドウマネージャがサポートしている場合は、親ウィンドウと共通のタスクバーエントリを持ちます。

QDialog また、QMainWindow ウィジェットは、コンストラクタで親ウィジェットが指定されている場合でも、デフォルトではウィンドウとして扱われます。この動作は、Qt::Window フラグによって指定されます。

window()、isModal()、およびparentWidget()も参照してください 。

[virtual protected] void QWidget::keyPressEvent(QKeyEvent *event)

このイベントハンドラ(event イベント用)は、サブクラスで再実装することで、ウィジェットに対するキー押下イベントを受け取ることができます。

ウィジェットは、キー押下イベントを受信するために、最初にsetFocusPolicy() を呼び出してフォーカスを受け入れ、フォーカスを保持している必要があります。

このハンドラを再実装する場合、キーに対して何らかの処理を行わないときは、基底クラスの実装を呼び出すことが非常に重要です。

デフォルトの実装では、ユーザーがQKeySequence::Cancel のキーシーケンス(通常は Escape キー)を押すと、ポップアップウィジェットが閉じられます。それ以外の場合は、イベントは無視され、ウィジェットの親がそれを解釈できるようになります。

QKeyEvent はisAccepted() == trueの状態で開始されるため、QKeyEvent::accept()を呼び出す必要はありません。ただし、キーに対して何らかの処理を行う場合は、基底クラスの実装を呼び出さないようにしてください。

keyReleaseEvent()、setFocusPolicy()、focusInEvent()、focusOutEvent()、event()、およびQKeyEventも参照してください 。

[virtual protected] void QWidget::keyReleaseEvent(QKeyEvent *event)

イベントevent に対応するこのイベントハンドラは、サブクラスで再実装することで、ウィジェットのキー離しイベントを受け取ることができます。

ウィジェットがキーの解放イベントを受信するには、最初に `accept focus ` を実行し、その後 `have focus ` を実行する必要があります。

このハンドラを再実装する場合、キーに対して何らかの処理を行わないときは、基底クラスの実装を呼び出すことが非常に重要です。

デフォルトの実装では、ウィジェットの親がイベントを解釈できるように、イベントは無視されます。

QKeyEvent は isAccepted() == true の状態で開始されるため、QKeyEvent::accept() を呼び出す必要はありません。ただし、キーに対して何らかの処理を行う場合は、基底クラスの実装を呼び出さないでください。

keyPressEvent()、QEvent::ignore()、setFocusPolicy()、focusInEvent()、focusOutEvent()、event()、およびQKeyEventも参照してください 。

[static] QWidget *QWidget::keyboardGrabber()

現在キーボード入力を取得しているウィジェットを返します。

このアプリケーション内で現在キーボード入力を取得しているウィジェットがない場合、nullptr が返されます。

grabMouse() およびmouseGrabber()も参照してください 。

QLayout *QWidget::layout() const

このウィジェットにインストールされているレイアウトマネージャーを返します。レイアウトマネージャーがインストールされていない場合は、nullptr を返します。

レイアウトマネージャは、レイアウトに追加されたウィジェットの子要素のジオメトリを設定します。

setLayout()、sizePolicy()、および「レイアウト管理」も参照してください 。

[virtual protected] void QWidget::leaveEvent(QEvent *event)

このイベントハンドラは、サブクラスで再実装することで、event パラメータを介して渡されるウィジェットの離脱イベントを受け取ることができます。

leaveイベントは、マウスカーソルがウィジェットから離れたときにウィジェットに送信されます。

enterEvent()、mouseMoveEvent()、およびevent()も参照してください 。

[slot] void QWidget::lower()

ウィジェットを親ウィジェットのスタックの最下層に移動します。

この呼び出し後、ウィジェットは視覚的に、重なり合う兄弟ウィジェットの後ろに位置することになります(したがって、それらのウィジェットによって隠れます)。

raise() およびstackUnder()も参照してください 。

[since 6.0] QPointF QWidget::mapFrom(const QWidget *parent, const QPointF &pos) const

ウィジェットの座標pos を、座標系parent からこのウィジェットの座標系に変換します。parent はnullptr であってはならず、呼び出し元のウィジェットの親ウィジェットでなければなりません。

この関数は Qt 6.0 で導入されました。

mapTo()、mapFromParent()、mapFromGlobal()、およびunderMouse()も参照してください 。

QPoint QWidget::mapFrom(const QWidget *parent, const QPoint &pos) const

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

[since 6.0] QPointF QWidget::mapFromGlobal(const QPointF &pos) const

グローバル画面座標pos をウィジェット座標に変換します。

この関数は Qt 6.0 で導入されました。

mapToGlobal()、mapFrom)、およびmapFromParent()も参照してください 。

QPoint QWidget::mapFromGlobal(const QPoint &pos) const

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

[since 6.0] QPointF QWidget::mapFromParent(const QPointF &pos) const

親ウィジェットの座標pos をウィジェットの座標に変換します。

ウィジェットに親がない場合は、mapFromGlobal() と同じ動作をします。

この関数は Qt 6.0 で導入されました。

mapToParent()、mapFrom()、mapFromGlobal()、およびunderMouse()も参照してください 。

QPoint QWidget::mapFromParent(const QPoint &pos) const

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

[since 6.0] QPointF QWidget::mapTo(const QWidget *parent, const QPointF &pos) const

ウィジェットの座標pos を、座標系parent に変換します。parent はnullptr であってはならず、呼び出し元のウィジェットの親でなければなりません。

この関数は Qt 6.0 で導入されました。

mapFrom()、mapToParent()、mapToGlobal()、およびunderMouse()も参照してください 。

QPoint QWidget::mapTo(const QWidget *parent, const QPoint &pos) const

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

[since 6.0] QPointF QWidget::mapToGlobal(const QPointF &pos) const

ウィジェットの座標 `pos ` を画面のグローバル座標に変換します。たとえば、mapToGlobal(QPointF(0,0)) とすると、ウィジェットの左上ピクセルのグローバル座標が得られます。

この関数は Qt 6.0 で導入されました。

mapFromGlobal()、mapTo()、およびmapToParent()も参照してください 。

QPoint QWidget::mapToGlobal(const QPoint &pos) const

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

[since 6.0] QPointF QWidget::mapToParent(const QPointF &pos) const

ウィジェットの座標 `pos ` を、親ウィジェット内の座標に変換します。

ウィジェットに親がない場合は、mapToGlobal() と同じ動作をします。

この関数は Qt 6.0 で導入されました。

mapFromParent()、mapTo()、mapToGlobal()、およびunderMouse()も参照してください 。

QPoint QWidget::mapToParent(const QPoint &pos) const

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

QRegion QWidget::mask() const

ウィジェットに現在設定されているマスクを返します。マスクが設定されていない場合、戻り値は空の領域になります。

setMask()、clearMask()、およびQRegion::isEmpty()も参照してください 。

[override virtual protected] int QWidget::metric(QPaintDevice::PaintDeviceMetric m) const

QPaintDevice::metric (QPaintDevice::PaintDeviceMetric metric)const を再実装します。

仮想関数QPaintDevice::metric() の内部実装。

m は、取得するメトリックです。

[virtual protected] void QWidget::mouseDoubleClickEvent(QMouseEvent *event)

イベントevent に対応するこのイベントハンドラは、サブクラスで再実装することで、ウィジェットに対するマウスのダブルクリックイベントを受け取ることができます。

デフォルトの実装では、mousePressEvent() が呼び出されます。

注:ウィジェットは 、ダブルクリックイベントに加えて、マウスの押下イベントおよび離しイベントも受信します。また、このウィジェットと重なっている別のウィジェットが、押下イベントまたは離しイベントに応じて非表示になった場合、このウィジェットはダブルクリックイベントのみを受信します。アプリケーションがこれらのイベントを正しく解釈するようにするのは、開発者の責任です。

関連項目: mousePressEvent()、mouseReleaseEvent()、mouseMoveEvent()、event()、およびQMouseEvent 。

[static] QWidget *QWidget::mouseGrabber()

現在マウス入力を取得しているウィジェットを返します。

このアプリケーション内で現在マウス入力を取得しているウィジェットがない場合、nullptr が返されます。

grabMouse() およびkeyboardGrabber()も参照してください 。

[virtual protected] void QWidget::mouseMoveEvent(QMouseEvent *event)

このイベントハンドラ(event イベント用)は、サブクラスで再実装することで、ウィジェットのマウス移動イベントを受け取ることができます。

マウストラッキングがオフになっている場合、マウス移動イベントは、マウスを移動させている間にマウスボタンが押されたときにのみ発生します。マウストラッキングがオンになっている場合、マウスボタンが押されていなくてもマウス移動イベントが発生します。

QMouseEvent::position() は、このウィジェットを基準としたマウスカーソルの位置を報告します。押下および解放イベントの場合、位置は通常、最後のマウス移動イベントの位置と同じですが、ユーザーの手が震えている場合は異なる場合があります。これは Qt ではなく、基盤となるウィンドウシステムの特徴です。

マウスの移動中にツールチップを即座に表示したい場合(例:QMouseEvent::position() でマウスの座標を取得し、それをツールチップとして表示する場合)、前述のようにまずマウストラッキングを有効にする必要があります。 そして、ツールチップが即座に更新されるようにするには、mouseMoveEvent() の実装において、setToolTip() の代わりにQToolTip::showText() を呼び出す必要があります。

関連項目: setMouseTracking()、mousePressEvent()、mouseReleaseEvent()、mouseDoubleClickEvent()、event()、QMouseEvent 、およびScribble の例。

[virtual protected] void QWidget::mousePressEvent(QMouseEvent *event)

このイベントハンドラ(event )は、サブクラスで再実装することで、ウィジェットのマウス押下イベントを受け取ることができます。

mousePressEvent() 内で新しいウィジェットを作成すると、基盤となるウィンドウシステム(または X11 ウィンドウマネージャ)やウィジェットの位置などによっては、mouseReleaseEvent() が期待した場所で終了しない場合があります。

デフォルトの実装では、ウィンドウの外側をクリックした際にポップアップウィジェットを閉じる処理が行われます。その他のウィジェットタイプに対しては、何もしません。

mouseReleaseEvent()、mouseDoubleClickEvent()、mouseMoveEvent()、event()、QMouseEvent 、および「Scribble Example」も参照してください 。

[virtual protected] void QWidget::mouseReleaseEvent(QMouseEvent *event)

イベント `event` に対するこのイベントハンドラは、サブクラスで再実装することで、ウィジェットのマウス離しイベントを受け取ることができます。

mousePressEvent()、mouseDoubleClickEvent()、mouseMoveEvent()、event()、QMouseEvent 、および「Scribble」の例も参照してください 。

void QWidget::move(int x, int y)

これは、move(QPoint(x,y)) に対応します。

注: プロパティpos のセッター 関数です。

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

[virtual protected] void QWidget::moveEvent(QMoveEvent *event)

このイベントハンドラは、サブクラスで再実装することで、event パラメータを通じて渡されるウィジェットの移動イベントを受け取ることができます。ウィジェットがこのイベントを受け取った時点で、ウィジェットはすでに新しい位置にあります。

元の位置は、QMoveEvent::oldPos() を通じて取得できます。

resizeEvent()、event()、move()、およびQMoveEventも参照してください 。

[virtual protected] bool QWidget::nativeEvent(const QByteArray &eventType, void *message, qintptr *result)

この特別なイベントハンドラは、サブクラスで再実装することで、message パラメータを通じて渡される、eventType で識別されるネイティブプラットフォームのイベントを受け取ることができます。

この関数を再実装する際、Qtによるイベント処理を停止したい場合は、trueを返し、result を設定してください。result パラメータはWindowsでのみ意味を持ちます。falseを返した場合、このネイティブイベントはQtに引き渡され、QtはイベントをQtイベントに変換してウィジェットに送信します。

注:イベントは 、ウィジェットがネイティブのウィンドウハンドルを持っている場合にのみ、このイベントハンドラに配信されます。

注:この関数は 、Qt 4 のイベントフィルタ関数 x11Event()、winEvent()、および macEvent() に取って代わるものです。

プラットフォームイベントタイプの識別子メッセージタイプ結果の型
Windows"windows_generic_MSG"MSG *LRESULT
macOS"NSEvent"NSEvent *
XCB"xcb_generic_event_t"xcb_generic_event_t *

QAbstractNativeEventFilterも参照してください 。

QWidget *QWidget::nativeParentWidget() const

このウィジェットのネイティブ親、つまりシステム識別子を持つ直系の先祖ウィジェットを返します。ネイティブ親が存在しない場合は、nullptr を返します。

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

QWidget *QWidget::nextInFocusChain() const

このウィジェットのフォーカスチェーンにある次のウィジェットを返します。

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

void QWidget::overrideWindowFlags(Qt::WindowFlags flags)

ウィンドウシステムに通知することなく、ウィジェットのウィンドウフラグをflags に設定します。

警告: 自分が何をしているかを十分に理解していない限り、この関数を呼び出さないでください 。

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

[override virtual] QPaintEngine *QWidget::paintEngine() const

QPaintDevice::paintEngine() const を再実装します。

ウィジェットのペイントエンジンを返します。

この関数は再実装のみを目的としているため、ユーザーが明示的に呼び出してはならないことに注意してください。この関数はQt内部で呼び出され、デフォルトの実装では必ずしも有効なポインタが返されるとは限りません。

[virtual protected] void QWidget::paintEvent(QPaintEvent *event)

このイベントハンドラは、event で渡されるペイントイベントを受け取るために、サブクラスで再実装することができます。

ペイントイベントとは、ウィジェットの全部または一部を再描画する要求のことです。これは、以下のいずれかの理由で発生します:

  • repaint() または `update()` が呼び出された場合、
  • ウィジェットが隠れていた状態から再び表示された場合、または
  • その他多くの理由。

多くのウィジェットは、要求があれば単に表面全体を再描画できますが、処理の遅い一部のウィジェットでは、要求された領域のみを描画することで最適化する必要があります:QPaintEvent::region()。この速度最適化は結果を変えることはありません。なぜなら、イベント処理中に描画はその領域にクリップされるからです。例えば、QListView やQTableView はこれを行っています。

また、Qt では複数のペイントイベントを 1 つに統合することで、描画の高速化を図っています。update() が複数回呼び出されたり、ウィンドウシステムから複数のペイントイベントが送信されたりした場合、Qt はこれらのイベントを、より広い領域を持つ 1 つのイベントに統合します(QRegion::united() を参照)。repaint() 関数ではこの最適化が行われないため、可能な限りupdate() を使用することをお勧めします。

ペイントイベントが発生した時点で、通常、更新領域はすでに消去されているため、ウィジェットの背景上に描画することになります。

背景は、setBackgroundRole() およびsetPalette() を使用して設定できます。

Qt 4.0 以降、QWidget は自動的にダブルバッファリングを行うため、ちらつきを防ぐために paintEvent() 内でダブルバッファリングのコードを記述する必要はありません。

注:一般的に 、paintEvent()内で update() やrepaint() を呼び出すことは避けるべきです。例えば、paintEvent() 内で子ウィジェットに対してupdate() やrepaint() を呼び出すと、未定義の挙動が生じます。子ウィジェットがペイントイベントを受け取る場合と受け取らない場合があります。

警告: Qtのバッキングストアを使用しないカスタムペイントエンジンを使用している場合は 、Qt::WA_PaintOnScreen を設定する必要があります。そうしないと、QWidget::paintEngine()は決して呼び出されず、代わりにバッキングストアが使用されます。

関連項目: event()、repaint()、update()、QPainter 、QPixmap 、QPaintEvent 、およびAnalog Clock。

QWidget *QWidget::parentWidget() const

このウィジェットの親を返します。親ウィジェットが存在しない場合は、nullptr を返します。

QWidget *QWidget::previousInFocusChain() const

InFocusChain関数は、このウィジェットのフォーカスチェーンにある直前のウィジェットを返します。

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

[slot] void QWidget::raise()

このウィジェットを、親ウィジェットのスタックの最前面に配置します。

この呼び出し後、このウィジェットは、重なり合っている兄弟ウィジェットのすべてよりも視覚的に手前に表示されます。

注: activateWindow() を使用する場合 、この関数を呼び出すことで、ウィンドウが最前面に配置されるようにすることができます。

関連項目: lower() およびstackUnder()。

void QWidget::releaseKeyboard()

キーボードのロックを解除します。

grabKeyboard()、grabMouse()、releaseMouse()も参照してください 。

void QWidget::releaseMouse()

マウスのグラブを解除します。

grabMouse()、grabKeyboard()、およびreleaseKeyboard()も参照してください 。

void QWidget::releaseShortcut(int id)

指定されたid を持つショートカットを、Qtのショートカットシステムから削除します。これにより、そのウィジェットは、そのショートカットのキーシーケンスに関するQEvent::Shortcut イベントを受け取らなくなります(同じキーシーケンスを持つ他のショートカットがない場合)。

警告: Qtのショートカットシステムでは、親ウィジェットが破棄されるとショートカットが自動的に削除されるため、通常はこの関数を使用する必要はありません 。ショートカットの処理には、この低レベルな関数よりも使い勝手の良いQAction やQShortcut を使用することをお勧めします。また、これは処理負荷の高い操作である点にも注意してください。

grabShortcut() およびsetShortcutEnabled()も参照してください 。

void QWidget::removeAction(QAction *action)

このウィジェットのアクション一覧から、アクション「action 」を削除します。

insertAction() およびactions()も参照してください 。

void QWidget::render(QPaintDevice *target, const QPoint &targetOffset = QPoint(), const QRegion &sourceRegion = QRegion(), QWidget::RenderFlags renderFlags = RenderFlags(DrawWindowBackground | DrawChildren))

このウィジェットのsourceRegion をtarget にレンダリングします。この際、renderFlags を使用してレンダリング方法を決定します。レンダリングは、target 内のtargetOffset から開始されます。例:

QPixmap pixmap(widget->size());
widget->render(&pixmap);

sourceRegion がnull領域の場合、この関数はQWidget::rect()を領域として使用します。つまり、ウィジェット全体が領域となります。

レンダリングを行う前に、target デバイスのアクティブなペインター(存在する場合)に対してQPainter::end()を呼び出すようにしてください。例:

QPainter painter(this);
...
painter.end();
myWidget->render(this);

注: `QOpenGLWidget` の内容を取得するには 、代わりに `QOpenGLWidget::grabFramebuffer()` を使用してください。

void QWidget::render(QPainter *painter, const QPoint &targetOffset = QPoint(), const QRegion &sourceRegion = QRegion(), QWidget::RenderFlags renderFlags = RenderFlags(DrawWindowBackground | DrawChildren))

ウィジェットをpainter のQPainter::device()にレンダリングします。

painter に適用されている変形や設定は、レンダリング時に使用されます。

注: painter は アクティブである必要があります。macOSでは、ウィジェットはQPixmap にレンダリングされ、その後painter によって描画されます。

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

QPainter::device()も参照してください 。

[slot] void QWidget::repaint()

更新が無効になっているか、ウィジェットが非表示でない限り、直ちにpaintEvent()を呼び出してウィジェットを直接再描画します。

repaint() の使用は、アニメーション中など、即時の再描画が必要な場合にのみ推奨します。ほとんどの場合、update() を使用する方が適切です。これにより、Qt が速度を最適化し、ちらつきを最小限に抑えることができるためです。

警告: paintEvent() から呼び出される可能性のある関数内で repaint()を呼び出すと 、無限再帰が発生する恐れがあります。update() 関数は再帰を引き起こすことはありません。

注:この スロットは オーバーロードされています。このスロットに接続するには:

// Connect using qOverload:
connect(sender, &SenderClass::signal,
        widget, qOverload<>(&QWidget::repaint));

// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
        widget, [receiver = widget]() { receiver->repaint(); });
その他の例や手法については、「オーバーロードされたスロットへの接続」を参照してください。

関連項目: update()、paintEvent()、およびsetUpdatesEnabled()。

void QWidget::repaint(const QRect &rect)

このバージョンでは、ウィジェット内の矩形rect を再描画します。

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

void QWidget::repaint(const QRegion &rgn)

このバージョンは、ウィジェット内の領域rgn を再描画します。

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

void QWidget::repaint(int x, int y, int w, int h)

このバージョンでは、ウィジェット内の矩形(x 、y 、w 、h )を再描画します。

w が負の値の場合、width() - x に置き換えられ、h が負の値の場合、height() - y に置き換えられます。

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

void QWidget::resize(int w, int h)

これは、resize(QSize(w,h)) に対応します。

注: プロパティsize のセッター 関数です。

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

[virtual protected] void QWidget::resizeEvent(QResizeEvent *event)

このイベントハンドラは、サブクラスで再実装して、event パラメータを通じて渡されるウィジェットのリサイズイベントを受け取ることができます。resizeEvent()が呼び出される時点で、ウィジェットはすでに新しいジオメトリを持っています。以前のサイズには、QResizeEvent::oldSize()を通じてアクセスできます。

ウィジェットは、サイズ変更イベントの処理が完了するとすぐに消去され、ペイントイベントを受信します。このハンドラ内では、描画を行う必要はありません(また、行うべきでもありません)。

関連項目: moveEvent()、event()、resize()、QResizeEvent 、paintEvent()、および「Scribble」の例。

bool QWidget::restoreGeometry(const QByteArray &geometry)

バイト配列 `geometry` に格納されている最上位ウィジェットのジオメトリと状態を復元します。成功した場合は `true ` を返し、失敗した場合は `false` を返します。

復元されたジオメトリが画面外にある場合、利用可能な画面ジオメトリ内に収まるように変更されます。

QSettings を使用して保存されたジオメトリを復元するには、次のようなコードを使用できます。

QSettings settings("MyCompany", "MyApp");
myWidget->restoreGeometry(settings.value("myWidget/geometry").toByteArray());

ウィンドウのジオメトリに関する問題の概要については、「ウィンドウのジオメトリ」のドキュメントを参照してください。

QMainWindow::restoreState() を使用して、ジオメトリおよびツールバーやドックウィジェットの状態を復元します。

saveGeometry()、QSettings 、QMainWindow::saveState()、およびQMainWindow::restoreState()も参照してください 。

QByteArray QWidget::saveGeometry() const

トップレベルのウィジェットの現在のジオメトリと状態を保存します。

ウィンドウが閉じられる際にジオメトリを保存するには、次のようにcloseイベントを実装します。

void MyWidget::closeEvent(QCloseEvent *event)
{
    QSettings settings("MyCompany", "MyApp");
    settings.setValue("geometry", saveGeometry());
    QWidget::closeEvent(event);
}

ウィンドウのジオメトリに関する問題の概要については、「Window Geometry」のドキュメントを参照してください。

ツールバーやドックウィジェットのジオメトリと状態を保存するには、QMainWindow::saveState() を使用してください。

restoreGeometry()、QMainWindow::saveState()、およびQMainWindow::restoreState()も参照してください 。

QScreen *QWidget::screen() const

そのウィジェットが配置されている画面を返します。

setScreen() およびwindowHandle()も参照してください 。

void QWidget::scroll(int dx, int dy)

ウィジェットとその子要素を含めて、dx ピクセル右へ、dy ピクセル下へスクロールします。dx とdy の両方が負の値になる場合があります。

スクロール後、ウィジェットは再描画が必要な領域についてペイントイベントを受け取ります。Qt が不透明であると認識しているウィジェットの場合、これは新しく露出された部分のみです。たとえば、不透明なウィジェットが 8 ピクセル左にスクロールされた場合、右端の幅 8 ピクセルの帯のみが更新されます。

ウィジェットはデフォルトで親のコンテンツを伝播するため、ウィジェットを不透明にするには、autoFillBackground プロパティを設定するか、setAttribute() を使用してQt::WA_OpaquePaintEvent 属性を設定する必要があります。

コンテンツの伝播を使用するウィジェットの場合、スクロールが行われるとスクロール領域全体が更新されます。

「Transparency and Double Buffering」も参照してください 。

void QWidget::scroll(int dx, int dy, const QRect &r)

このバージョンでは、r のみをスクロールし、ウィジェットの子要素は移動しません。

r が空または無効な場合、結果は未定義となります。

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

QScrollAreaも参照してください 。

void QWidget::setAttribute(Qt::WidgetAttribute attribute, bool on = true)

on がtrueの場合、このウィジェットのattribute 属性を設定します。そうでない場合は、この属性をクリアします。

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

void QWidget::setBackgroundRole(QPalette::ColorRole role)

ウィジェットの背景ロールを「role 」に設定します。

backgroundロールは、ウィジェットのpalette から、背景の描画に使用されるブラシを定義します。

role がQPalette::NoRole の場合、ウィジェットは親のbackground roleを継承します。

なお、スタイルではパレット内の任意の色を自由に選択できます。setBackgroundRole() を使用しても希望通りの結果が得られない場合は、パレットを変更するか、スタイルシートを設定してください。

backgroundRole() およびforegroundRole()も参照してください 。

void QWidget::setBaseSize(int basew, int baseh)

これは、setBaseSize(QSize(basew,baseh)) に対応します。ウィジェットの基本サイズを、幅basew 、高さbaseh に設定します。

注: プロパティ `baseSize`のセッター 関数です。

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

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

void QWidget::setContentsMargins(int left, int top, int right, int bottom)

ウィジェットのコンテンツ周囲の余白を、left 、top 、right 、bottom のサイズに設定します。これらの余白はレイアウトシステムで使用され、サブクラスでは描画対象領域(例:フレームを除く)を指定するために使用される場合があります。

マージンを変更すると、resizeEvent() が発生します。

contentsRect() およびcontentsMargins()も参照してください 。

void QWidget::setContentsMargins(const QMargins &margins)

setContentsMargins 関数は、ウィジェットのコンテンツ周囲の余白を設定します。

ウィジェットのコンテンツ周囲のマージンを、margins で指定されたサイズに設定します。これらのマージンはレイアウトシステムによって使用され、サブクラスでは描画対象領域(例:フレームを除く)を指定するために使用される場合があります。

マージンを変更すると、resizeEvent() が呼び出されます。

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

contentsRect() およびcontentsMargins()も参照してください 。

[slot] void QWidget::setDisabled(bool disable)

disable が true の場合はウィジェットの入力イベントを無効にし、それ以外の場合は入力イベントを有効にします。

詳細については、enabled のドキュメントを参照してください。

isEnabledTo()、QKeyEvent 、QMouseEvent 、およびchangeEvent()も参照してください 。

void QWidget::setFixedHeight(int h)

ウィジェットの幅を変更せずに、最小高さと最大高さの両方をh に設定します。利便性のために用意されています。

sizeHint()、minimumSize()、maximumSize()、およびsetFixedSize()も参照してください 。

void QWidget::setFixedSize(const QSize &s)

ウィジェットの最小サイズと最大サイズの両方を `s` に設定し、それによってウィジェットが拡大・縮小することを一切防止します。

これにより、QLayout で設定されたデフォルトのサイズ制約が上書きされます。

制約を解除するには、サイズを `QWIDGETSIZE_MAX` に設定してください。

あるいは、ウィジェットをその内容に基づいて固定サイズにしたい場合は、QLayout::setSizeConstraint(QLayout::SetFixedSize) を呼び出すことができます。

maximumSize およびminimumSizeも参照してください 。

void QWidget::setFixedSize(int w, int h)

ウィジェットの幅をw 、高さをh に設定します。

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

void QWidget::setFixedWidth(int w)

ウィジェットの最小幅と最大幅の両方をw に設定し、高さは変更しません。利便性のために用意されています。

sizeHint()、minimumSize()、maximumSize()、およびsetFixedSize()も参照してください 。

void QWidget::setFocus(Qt::FocusReason reason)

このウィジェットまたはその親のいずれかが「active window 」である場合、キーボードの入力フォーカスをこのウィジェット(またはそのフォーカスプロキシ)に与えます。reason 引数は、この関数から送信されるすべてのフォーカスイベントに渡され、ウィジェットがフォーカスを取得した原因を説明するために使用されます。 ウィンドウがアクティブでない場合、ウィンドウがアクティブになった時点で、このウィジェットにフォーカスが与えられます。

まず、フォーカスが変更されようとしていることを伝えるために、フォーカスウィジェット(存在する場合)に「フォーカス変更直前」イベントが送信されます。 その後、フォーカスが変更されると、以前のフォーカス対象に「フォーカスアウト」イベントが送信され、新しい対象には「フォーカスイン」イベントが送信され、フォーカスが移ったことが通知されます。(フォーカスインとフォーカスアウトの対象が同じウィジェットの場合は、何も起こりません。)

注: 組み込みプラットフォームでは 、setFocus() を実行しても、入力メソッドによって入力パネルが開かれることはありません。これを実行したい場合は、ウィジェットに対してQEvent::RequestSoftwareInputPanel イベントを自ら送信する必要があります。

setFocus() は、ウィジェットのフォーカスポリシーに関係なくそのウィジェットにフォーカスを与えますが、キーボードのロックは解除しません(grabKeyboard() を参照)。

ウィジェットが非表示の場合、表示されるまではフォーカスを受け付けないことに注意してください。

警告: ` focusOutEvent()` または `focusInEvent()` から呼び出される可能性のある関数内で `setFocus()` を呼び出すと、 無限再帰が発生する可能性があります。

関連項目: hasFocus()、clearFocus()、focusInEvent()、focusOutEvent()、setFocusPolicy()、focusWidget()、QApplication::focusWidget()、grabKeyboard()、grabMouse()、ウィジェットでのキーボードフォーカス、およびQEvent::RequestSoftwareInputPanel 。

[slot] void QWidget::setFocus()

このウィジェットまたはその親のいずれかがactive window である場合、キーボードの入力フォーカスをこのウィジェット(またはそのフォーカスプロキシ)に設定します。

注:この スロットは オーバーロードされています。このスロットに接続するには:

// Connect using qOverload:
connect(sender, &SenderClass::signal,
        widget, qOverload<>(&QWidget::setFocus));

// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
        widget, [receiver = widget]() { receiver->setFocus(); });
その他の例や手法については、「オーバーロードされたスロットへの接続」を参照してください。

void QWidget::setFocusProxy(QWidget *w)

ウィジェットのフォーカスプロキシをウィジェット `w` に設定します。w が `nullptr` の場合、この関数はこのウィジェットのフォーカスプロキシを解除します。

一部のウィジェットは「フォーカスを持つ」ことができますが、実際にフォーカスを処理するために、QLineEdit のような子ウィジェットを作成します。この場合、そのウィジェットは、ラインエディットを自身のフォーカスプロキシとして設定することができます。

setFocusProxy() は、「このウィジェット」がフォーカスを得た際に、実際にフォーカスを受けるウィジェットを設定します。フォーカスプロキシが存在する場合、setFocus() およびhasFocus() は、そのフォーカスプロキシに対して動作します。「このウィジェット」がフォーカスウィジェットである場合、setFocusProxy() はフォーカスを新しいフォーカスプロキシに移します。

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

void QWidget::setForegroundRole(QPalette::ColorRole role)

ウィジェットの前景色を「role 」に設定します。

フォアグラウンド・ロールは、ウィジェットのpalette から、フォアグラウンドの描画に使用される色を定義します。

role が `QPalette::NoRole` の場合、ウィジェットは背景ロールと対照的な前景色ロールを使用します。

スタイルでは、パレット内の任意の色を自由に選択できることに注意してください。setForegroundRole() を使用して希望の結果が得られない場合は、パレットを変更するか、スタイルシートを設定することができます。

foregroundRole() およびbackgroundRole()も参照してください 。

void QWidget::setGeometry(int x, int y, int w, int h)

これは、setGeometry(QRect(x,y,w,h)) に対応します。

注: プロパティgeometry のセッター 関数です。

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

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

void QWidget::setGraphicsEffect(QGraphicsEffect *effect)

setGraphicsEffect 関数は、ウィジェットのグラフィック効果を設定するためのものです。

effect をウィジェットのエフェクトとして設定します。このウィジェットにすでにエフェクトが適用されている場合、QWidget は新しいeffect を適用する前に、既存のエフェクトを削除します。

effect が別のウィジェットにインストールされているエフェクトである場合、setGraphicsEffect() はそのウィジェットからエフェクトを削除し、このウィジェットにインストールします。

QWidget effect の所有権を取得します。

注:この関数は 、自身とそのすべての子ウィジェットにエフェクトを適用します。

注: QGLWidget、QOpenGLWidget 、QQuickWidget などの OpenGL ベースのウィジェットでは、Graphical Effects はサポートされていません。

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

[slot] void QWidget::setHidden(bool hidden)

setVisible (!hidden )と同等の便利関数です。

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

void QWidget::setLayout(QLayout *layout)

このウィジェットのレイアウトマネージャーを「layout 」に設定します。

このウィジェットにすでにレイアウトマネージャーが設定されている場合、QWidget では別のレイアウトマネージャーを設定することはできません。新しいレイアウトで setLayout() を呼び出すには、まず既存のレイアウトマネージャー(layout() によって返されるもの)を削除する必要があります。

layout が別のウィジェットのレイアウトマネージャーである場合、setLayout() によってレイアウトの親が変更され、このウィジェットのレイアウトマネージャーとなります。

例:

QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(formWidget);
formWidget->setLayout(layout);

この関数を呼び出す代わりに、このウィジェットをレイアウトのコンストラクタに渡すこともできます。

QWidget はlayout の所有権を引き継ぎます。

「 layout()」および「レイアウト管理」も参照してください 。

void QWidget::setMask(const QBitmap &bitmap)

bitmap に対応する1ビットを持つウィジェットのピクセルのみが表示されるようにします。領域にウィジェットのrect()の範囲外のピクセルが含まれている場合、その領域内のウィンドウシステムコントロールは、プラットフォームによっては表示される場合と表示されない場合があります。

なお、領域が特に複雑な場合、この処理に時間がかかることがあります。

以下のコードは、アルファチャンネルを持つ画像を使用してウィジェットのマスクを生成する方法を示しています。

QLabel topLevelLabel;
QPixmap pixmap(":/images/tux.png");
topLevelLabel.setPixmap(pixmap);
topLevelLabel.setMask(pixmap.mask());

このコードで表示されるラベルは、その中に含まれる画像を使用してマスクされており、不規則な形状の画像が画面上に直接描画されているかのように見えます。

マスクされたウィジェットは、表示されている部分でのみマウスイベントを受け取ります。

mask()、clearMask()、およびwindowOpacity()も参照してください 。

void QWidget::setMask(const QRegion &region)

region と重なるウィジェットの部分のみを表示します。その領域にウィジェットのrect() の範囲外にあるピクセルが含まれている場合、その領域内のウィンドウシステムコントロールは、プラットフォームによっては表示される場合と表示されない場合があります。

QRegion を使用すると、任意に複雑な領域を作成できるため、ウィジェットマスクは最も型破りな形状のウィンドウに合わせて作成でき、ウィジェットに穴を開けた状態で表示することも可能です。ただし、領域が特に複雑な場合、この処理に時間がかかることがある点に注意してください。

ウィジェットマスクは、マスク外の領域に対するマウスイベントをアプリケーションが受け付けないことをウィンドウシステムに通知するために使用されます。ほとんどのシステムでは、マスクは粗い視覚的なクリッピングも引き起こします。滑らかなウィンドウの縁を得るには、「半透明の背景」の例に示されているように、代わりに半透明の背景とアンチエイリアス描画を使用してください。

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

windowOpacityも参照してください 。

void QWidget::setMaximumSize(int maxw, int maxh)

この関数は、setMaximumSize(QSize(maxw,maxh)) に対応します。最大幅をmaxw 、最大高さをmaxh に設定します。

注: プロパティmaximumSize のセッター 関数です。

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

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

void QWidget::setMinimumSize(int minw, int minh)

この関数は、setMinimumSize(QSize(minw, minh)) に対応します。最小幅をminw 、最小高さをminh に設定します。

注: プロパティminimumSize のセッター 関数です。

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

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

void QWidget::setParent(QWidget *parent)

ウィジェットの親を `parent` に設定し、ウィンドウフラグをリセットします。ウィジェットは、新しい親ウィンドウ内の座標 (0, 0) に移動されます。

新しい親ウィジェットが別のウィンドウ内にある場合、親が変更されたウィジェットとその子ウィジェットは、以前と同じ内部順序で、新しい親ウィジェットのtab chain の末尾に追加されます。移動されたウィジェットのいずれかがキーボードフォーカスを有していた場合、setParent()はそのウィジェットに対してclearFocus()を呼び出します。

新しい親ウィジェットが以前の親ウィジェットと同じウィンドウ内にある場合、親の設定を変更してもタブ順やキーボードフォーカスは変更されません。

「新しい」親ウィジェットが以前の親ウィジェットである場合、この関数は何も行いません。

注:ウィジェットは 、たとえ以前に表示されていたとしても、親の変更に伴い非表示になります。ウィジェットを再び表示するには、show() を呼び出す必要があります。

警告: この関数が必要になることはまずないでしょう 。コンテンツが動的に変化するウィジェットがある場合は、QStackedWidget を使用したほうがはるかに簡単です。

関連項目: setWindowFlags()。

void QWidget::setParent(QWidget *parent, Qt::WindowFlags f)

この関数は、ウィジェットフラグ(f )も引数として受け取ります。

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

void QWidget::setScreen(QScreen *screen)

ウィジェットを表示する画面を `screen` に設定します。

画面の設定はウィンドウに対してのみ有効です。必要に応じて、ウィジェットのウィンドウは `screen` 上で再作成されます。

注: 画面が複数の画面からなる仮想デスクトップの一部である場合 、ウィンドウは自動的に `screen` に移動しません。画面に対してウィンドウを配置するには、その画面の `topLeft()` 位置を使用してください。

関連項目: screen() およびQWindow::setScreen()。

void QWidget::setShortcutAutoRepeat(int id, bool enable = true)

enable が true の場合、指定されたid を持つショートカットの自動繰り返し機能が有効になります。そうでない場合は無効になります。

grabShortcut() およびreleaseShortcut()も参照してください 。

void QWidget::setShortcutEnabled(int id, bool enable = true)

enable がtrueの場合、指定されたid を持つショートカットが有効になります。そうでない場合は、ショートカットは無効になります。

警告: Qtのショートカットシステムでは、ウィジェットが非表示・表示になったり、フォーカスを取得・喪失したりする際にショートカットが自動的に有効・無効になるため、通常はこの関数を使用する必要はありません。 QAction やQShortcut を使用するのが最適です。これらは、この低レベルの関数よりも使いやすいためです。

grabShortcut() およびreleaseShortcut()も参照してください 。

void QWidget::setSizeIncrement(int w, int h)

x(幅)方向のサイズ増加量をw に、y(高さ)方向のサイズ増加量をh に設定します。

注: プロパティsizeIncrement のセッター 関数です。

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

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

void QWidget::setSizePolicy(QSizePolicy::Policy horizontal, QSizePolicy::Policy vertical)

ウィジェットのサイズポリシーを「horizontal 」および「vertical 」に設定します。これは、標準のストレッチが適用され、「height-for-width」は適用されません。

注: プロパティ `sizePolicy`のセッター 関数です。

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

sizePolicy() およびQSizePolicy::QSizePolicy()も参照してください 。

void QWidget::setStyle(QStyle *style)

ウィジェットのGUIスタイルをstyle に設定します。スタイルオブジェクトの所有権は譲渡されません。

スタイルが設定されていない場合、ウィジェットは代わりにアプリケーションのスタイルである `QApplication::style()` を使用します。

ウィジェットのスタイルを設定しても、既存または将来の子ウィジェットには影響しません。

警告: この関数は 、Qt のスタイル設定機能をデモ目的で示したい場合に特に有用です。実際のアプリケーションでは、この関数の使用を避け、代わりに一貫性のある単一の GUI スタイルを使用してください。

style()、QStyle 、QApplication::style()、およびQApplication::setStyle()も参照してください 。

[static] void QWidget::setTabOrder(QWidget *first, QWidget *second)

フォーカス順序において、「second 」ウィジェットを「first 」ウィジェットの後に配置します。

これにより、second ウィジェットがフォーカスチェーンから事実上除外され、first ウィジェットの後に挿入されます。

なお、second ウィジェットのタブ順序が変更されるため、チェーンの順序は次のように指定する必要があります:

setTabOrder(a, b); // a to b
setTabOrder(b, c); // a to b to c
setTabOrder(c, d); // a to b to c to d

このようにしてはいけません:

// WRONG
setTabOrder(c, d); // c to d
setTabOrder(a, b); // a to b AND c to d
setTabOrder(b, c); // a to b to c, but not c to d

first またはsecond にフォーカスプロキシがある場合、setTabOrder() はプロキシを正しく代入します。

注: Qt 5.10以降 :フォーカスプロキシとして子ウィジェットを持つウィジェットは、複合ウィジェットとして扱われます。1 つまたは 2 つの複合ウィジェット間でタブ順序を設定する場合、各ウィジェット内部のローカルなタブ順序は保持されます。 つまり、両方のウィジェットが複合ウィジェットである場合、結果として得られるタブ順は、first 内の最後の子から、second 内の最初の子へと順になります。

setFocusPolicy()、setFocusProxy()、および「ウィジェットにおけるキーボードフォーカス」も参照してください 。

[static, since 6.6] void QWidget::setTabOrder(std::initializer_list<QWidget *> widgets)

widgets リスト内のウィジェットのタブ順序を、連続するウィジェットのペアごとにQWidget::setTabOrder(QWidget *, QWidget *)を呼び出すことで設定します。

次のように各ペアを手動で設定する代わりに:

setTabOrder(a, b); // a to b
setTabOrder(b, c); // a to b to c
setTabOrder(c, d); // a to b to c to d

次のように呼び出すことができます:

setTabOrder({a, b, c, d}); // a to b to c to d

この呼び出しは、閉じたタブフォーカスループを作成しません。Qt::TabFocus フォーカスポリシーを持つウィジェットが他にもある場合、d でタブ操作を行うと、フォーカスはそれらのウィジェットのいずれかに移動し、a には戻りません。

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

この関数は Qt 6.6 で導入されました。

setFocusPolicy()、setFocusProxy()、および「ウィジェットにおけるキーボードフォーカス」も参照してください 。

void QWidget::setWindowFlag(Qt::WindowType flag, bool on = true)

on がtrueの場合、このウィジェットのウィンドウフラグflag を設定します。そうでない場合は、そのフラグをクリアします。

注:この関数は 、ウィンドウのフラグを変更する際に `setParent()` を呼び出すため、ウィジェットが非表示になります。ウィジェットを再び表示するには、`show()` を呼び出す必要があります。

関連項目: setWindowFlags()、windowFlags()、およびwindowType()。

void QWidget::setWindowRole(const QString &role)

ウィンドウのロールを「role 」に設定します。これは、X11上のウィンドウにおいてのみ意味を持ちます。

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

void QWidget::setWindowState(Qt::WindowStates windowState)

ウィンドウの状態をwindowState に設定します。ウィンドウの状態は、Qt::WindowState :Qt::WindowMinimized 、Qt::WindowMaximized 、Qt::WindowFullScreen 、およびQt::WindowActive の論理和(OR)で構成されます。

ウィンドウが表示されていない場合(つまり、isVisible()がfalse を返す場合)、ウィンドウの状態の変更はshow()が呼び出されたときに有効になります。表示されているウィンドウの場合、変更は即座に反映されます。たとえば、フルスクリーンモードと通常モードを切り替えるには、次のコードを使用します:

w->setWindowState(w->windowState() ^ Qt::WindowFullScreen);

最小化されたウィンドウを復元してアクティブにし(最大化および/または全画面表示の状態を維持したまま)、次のようにします:

w->setWindowState((w->windowState() & ~Qt::WindowMinimized) | Qt::WindowActive);

この関数を呼び出すと、ウィジェットが非表示になります。ウィジェットを再び表示するには、show()を呼び出す必要があります。

注: 一部のウィンドウシステムでは 、Qt::WindowActive の処理が即座に行われない場合があり、特定の状況では無視されることがあります。

ウィンドウの状態が変更されると、ウィジェットは `QEvent::WindowStateChange` 型の `changeEvent()` を受け取ります。

「 Qt::WindowState 」および「windowState()」も参照してください 。

void QWidget::setupUi(QWidget *widget)

指定されたwidget のユーザーインターフェースを設定します。

注:この関数は 、uic を使用して作成されたユーザーインターフェース記述から派生したウィジェットで利用可能です。

「アプリケーションでのQt Widgets Designer UIファイルの使用」も参照してください 。

[slot] void QWidget::show()

ウィジェットとその子ウィジェットを表示します。

子ウィンドウの場合、これは `setVisible(true)` を呼び出すのと同じです。それ以外の場合は、ウィンドウフラグに対するプラットフォームのデフォルトの挙動に応じて、`showFullScreen()`、`showMaximized()`、または `setVisible(true)` を呼び出すのと同じになります。

関連項目: raise(),showEvent(),hide(),setVisible(),showMinimized(),showMaximized(),showNormal(),isVisible(), およびwindowFlags()。

[virtual protected] void QWidget::showEvent(QShowEvent *event)

このイベントハンドラは、サブクラスで再実装することで、event パラメータを介して渡されるウィジェットの表示イベントを受け取ることができます。

非自発的な表示イベントは、ウィジェットが表示される直前にウィジェットに送信されます。ウィンドウの自発的な表示イベントは、その後に配信されます。

注:ウィジェットは、ウィンドウシステムによってそのマッピング状態が変更されたときに、自発的な表示および非表示イベントを受け取ります。例えば、ユーザーがウィンドウを最小化したときに自発的な非表示イベントが、ウィンドウが再び復元されたときに自発的な表示イベントが送信されます。自発的な非表示イベントを受け取った後も、ウィジェットは `isVisible()` の意味において、依然として表示されているとみなされます。

visible 、event()、およびQShowEventも参照してください 。

[slot] void QWidget::showFullScreen()

ウィジェットを全画面モードで表示します。

この関数の呼び出しは、windows にのみ影響します。

フルスクリーンモードを終了するには、showNormal() またはclose() を呼び出します。

注: フルスクリーンモードは Windows では問題なく動作しますが、X 環境下ではいくつかの問題があります。これらの問題は、X11 クライアントとウィンドウマネージャ間の通信を規定する ICCCM プロトコルの制限に起因しています。ICCCM は、装飾のないフルスクリーンウィンドウという概念を認識していないのです。 したがって、最善の方法は、枠なしウィンドウを要求し、画面全体を覆うように配置およびサイズ変更を行うことです。ウィンドウマネージャによっては、これが機能する場合もあれば、機能しない場合もあります。枠なしウィンドウはMOTIFヒントを使用して要求されますが、これは事実上すべての最新のウィンドウマネージャで、少なくとも部分的にはサポートされています。

別の方法として、ウィンドウマネージャを完全にバイパスし、Qt::X11BypassWindowManagerHint フラグを指定してウィンドウを作成するという手もあります。ただし、これにはキーボードフォーカスの不具合や、デスクトップの変更時、あるいはユーザーが他のウィンドウを前面に持ってきた際に非常に奇妙な現象が発生するなど、他の深刻な問題があります。

ICCCM以降の最新仕様に準拠したX11ウィンドウマネージャーは、フルスクリーンモードを適切にサポートしています。

macOSでは、ウィンドウを全画面表示にすると、アプリケーション全体が全画面モードになり、専用のデスクトップが割り当てられます。アプリケーションが全画面モードで実行されている間に別のウィンドウを表示すると、そのウィンドウも自動的に全画面表示になってしまう可能性があります。これを防ぐには、別のウィンドウを表示する前に、全画面ウィンドウに対してshowNormal() またはclose() を呼び出して全画面モードを終了してください。

関連項目: showNormal()、showMaximized()、show()、isVisible()、およびclose()。

[slot] void QWidget::showMaximized()

ウィジェットを最大化して表示します。

この関数を呼び出しても、影響を受けるのはwindows のみです。

X11 環境では、特定のウィンドウマネージャーを使用している場合、この関数が正常に動作しないことがあります。詳細については、「Window Geometry」のドキュメントを参照してください。

setWindowState()、showNormal()、showMinimized()、show()、hide()、およびisVisible()も参照してください 。

[slot] void QWidget::showMinimized()

ウィジェットを最小化して、アイコンとして表示します。

この関数を呼び出しても、影響を受けるのはwindows のみです。

showNormal()、showMaximized()、show()、hide()、isVisible()、およびisMinimized()も参照してください 。

[slot] void QWidget::showNormal()

ウィジェットが最大化または最小化された後に、元の状態に戻します。

この関数を呼び出しても、影響を受けるのはwindows のみです。

setWindowState()、showMinimized()、showMaximized()、show()、hide()、およびisVisible()も参照してください 。

void QWidget::stackUnder(QWidget *w)

ウィジェットを、親ウィジェットのスタック内のw の下に配置します。

これを機能させるには、ウィジェット自体とw が兄弟関係にある必要があります。

raise() およびlower()も参照してください 。

QStyle *QWidget::style() const

QWidget::setStyle()、QApplication::setStyle()、およびQApplication::style()も参照してください 。

[virtual protected] void QWidget::tabletEvent(QTabletEvent *event)

イベントevent に対するこのイベントハンドラは、サブクラスで再実装することで、ウィジェットに対するタブレットイベントを受け取ることができます。

このハンドラを再実装する場合、イベントを処理しないときは、ウィジェットの親がそれを解釈できるように、ignore() を実行することが非常に重要です。

デフォルトの実装では、このイベントは無視されます。

タブレットトラッキングがオフになっている場合、タブレット移動イベントは、スタイラスがタブレットに接触しているか、スタイラスを移動中に少なくとも 1 つのスタイラスボタンが押されている場合にのみ発生します。タブレットトラッキングがオンになっている場合、ボタンが押されていない状態でスタイラスがタブレットの近くをホバーしているだけでも、タブレット移動イベントが発生します。

QEvent::ignore()、QEvent::accept()、event()、setTabletTracking()、およびQTabletEventも参照してください 。

bool QWidget::testAttribute(Qt::WidgetAttribute attribute) const

このウィジェットに属性 `attribute ` が設定されている場合は `true ` を返し、そうでない場合は `false` を返します。

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

bool QWidget::underMouse() const

ウィジェットがマウスカーソルの下にある場合は `true ` を返し、そうでない場合は `false` を返します。

この値は、ドラッグ&ドロップ操作中は正しく更新されません。

enterEvent() およびleaveEvent()も参照してください 。

void QWidget::ungrabGesture(Qt::GestureType gesture)

指定されたgesture 型からウィジェットの登録を解除します

grabGesture() およびQGestureEventも参照してください 。

[slot] void QWidget::update()

更新が無効になっている場合や、ウィジェットが非表示になっている場合を除き、ウィジェットを更新します。

この関数は即座に再描画を行わず、代わりにQtがメインイベントループに戻った際に処理されるよう、描画イベントをスケジュールします。これにより、repaint()を呼び出す場合よりも、Qtは処理速度の向上とちらつきの低減を図ることができます。

update() を数回呼び出しても、通常はpaintEvent() が 1 回呼び出されるだけです。

Qt は通常、paintEvent() を呼び出す前にウィジェットの領域を消去します。Qt::WA_OpaquePaintEvent ウィジェット属性が設定されている場合、ウィジェット自身がすべてのピクセルを不透明な色で描画する責任を負います。

注:この スロットは オーバーロードされています。このスロットに接続するには:

// Connect using qOverload:
connect(sender, &SenderClass::signal,
        widget, qOverload<>(&QWidget::update));

// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
        widget, [receiver = widget]() { receiver->update(); });
その他の例や手法については、「オーバーロードされたスロットへの接続」を参照してください。

関連項目: repaint()、paintEvent()、setUpdatesEnabled()、およびAnalog Clock。

void QWidget::update(const QRect &rect)

このバージョンでは、ウィジェット内の矩形rect を更新します。

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

void QWidget::update(const QRegion &rgn)

このバージョンは、ウィジェット内の領域rgn を再描画します。

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

void QWidget::update(int x, int y, int w, int h)

このバージョンは、ウィジェット内の矩形(x 、y 、w 、h )を更新します。

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

void QWidget::updateGeometry()

このウィジェットが変更され、ジオメトリの変更が必要になる可能性があることをレイアウトシステムに通知します。

sizeHint() またはsizePolicy() の値が変更された場合は、この関数を呼び出してください。

明示的に非表示にされているウィジェットの場合、updateGeometry() は何もしません。ウィジェットが表示され次第、レイアウトシステムに通知されます。

[protected slot] void QWidget::updateMicroFocus(Qt::InputMethodQuery query = Qt::ImQueryAll)

ウィジェットのマイクロフォーカスを更新し、query で指定された状態が変更されたことを入力メソッドに通知します。

QRegion QWidget::visibleRegion() const

ペイントイベントが発生し得る、他のウィジェットに覆われていない領域を返します。

表示されているウィジェットの場合、これは他のウィジェットに覆われていない領域の近似値となります。それ以外の場合は、空の領域となります。

repaint() 関数は必要に応じてこの関数を呼び出すため、通常はこれを明示的に呼び出す必要はありません。

[virtual protected] void QWidget::wheelEvent(QWheelEvent *event)

イベントevent に対応するこのイベントハンドラは、サブクラスで再実装することで、ウィジェットのホイールイベントを受け取ることができます。

このハンドラを再実装する場合、イベントを処理しないときは、ウィジェットの親がそれを解釈できるように、ignore() を実行することが非常に重要です。

デフォルトの実装では、このイベントは無視されます。

QEvent::ignore()、QEvent::accept()、event()、およびQWheelEventも参照してください 。

WId QWidget::winId() const

ウィジェットのウィンドウシステム識別子を返します。

原則として移植性がありますが、これを使用する場合は、おそらく移植性のない処理を行おうとしていることになります。注意してください。

ウィジェットが非ネイティブ(エイリアン)であり、winId() が呼び出された場合、そのウィジェットにはネイティブハンドルが提供されます。

この値は実行時に変更される可能性があります。ウィンドウシステム識別子が変更されると、QEvent::WinIdChange 型のイベントがウィジェットに送信されます。

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

QWidget *QWidget::window() const

このウィジェットのウィンドウ、すなわち、ウィンドウシステムのフレームを持つ(あるいは持つ可能性のある)直系の親ウィジェットを返します。

ウィジェットがウィンドウである場合は、ウィジェット自体が返されます。

典型的な使用例は、ウィンドウのタイトルを変更することです:

aWidget->window()->setWindowTitle("New Window Title");

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

QWindow *QWidget::windowHandle() const

これがネイティブウィジェットである場合は、関連付けられたQWindow を返します。そうでない場合はnullを返します。

ネイティブウィジェットには、トップレベルウィジェット、QGLWidget、およびwinId()が呼び出された子ウィジェットが含まれます。

winId() およびscreen()も参照してください 。

[signal] void QWidget::windowIconChanged(const QIcon &icon)

このシグナルは、ウィンドウのアイコンが変更された際に発火し、引数として新しいicon が渡されます。

注: プロパティ `windowIcon` に対する通知 シグナルです。

QString QWidget::windowRole() const

ウィンドウの役割、または空の文字列を返します。

setWindowRole()、windowIcon 、およびwindowTitleも参照してください 。

Qt::WindowStates QWidget::windowState() const

現在のウィンドウの状態を返します。ウィンドウの状態は、Qt::WindowState :Qt::WindowMinimized 、Qt::WindowMaximized 、Qt::WindowFullScreen 、およびQt::WindowActive を論理和(OR)で結合したものです。

Qt::WindowState およびsetWindowState()も参照してください 。

[signal] void QWidget::windowTitleChanged(const QString &title)

このシグナルは、ウィンドウのタイトルが変更された際に発火し、引数として新しいtitle が渡されます。

注: プロパティ `windowTitle` に対する通知 シグナルです。

Qt::WindowType QWidget::windowType() const

このウィジェットのウィンドウタイプを返します。これは、windowFlags() およびQt::WindowType_Mask と同一です。

windowFlagsも参照してください 。

マクロのドキュメント

QWIDGETSIZE_MAX

QWidget オブジェクトの最大サイズを定義します。

ウィジェットの最大許容サイズは、QSize (QWIDGETSIZE_MAX, QWIDGETSIZE_MAX)、すなわちQSize (16777215, 16777215)です。

QWidget::setMaximumSize()も参照してください 。

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