QWidget Class
QWidgetクラスは、全てのユーザー・インターフェース・オブジェクトの基本クラスです。
Header: | #include <QWidget> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
qmake: | QT += widgets |
Inherits: | QObject and QPaintDevice |
Inherited By: | 39 typesQAbstractButton, QAbstractSlider, QAbstractSpinBox, QCalendarWidget, QComboBox, QDesignerActionEditorInterface, QDesignerFormWindowInterface, QDesignerObjectInspectorInterface, QDesignerPropertyEditorInterface, QDesignerWidgetBoxInterface, QDialog, QDialogButtonBox, QDockWidget, QFocusFrame, QFrame, QGroupBox, QHelpFilterSettingsWidget, QHelpSearchQueryWidget, QHelpSearchResultWidget, QKeySequenceEdit, QLineEdit, QMainWindow, QMdiSubWindow, QMenu, QMenuBar, QOpenGLWidget, QProgressBar, QQuickWidget, QRhiWidget, QRubberBand, QSizeGrip, QSplashScreen, QSplitterHandle, QStatusBar, QSvgWidget, QTabBar, QTabWidget, QToolBar, and QWizardPage |
パブリック型
enum | RenderFlag { DrawWindowBackground, DrawChildren, IgnoreMask } |
flags | RenderFlags |
プロパティ
|
|
パブリック関数
QWidget(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags()) | |
virtual | ~QWidget() |
bool | acceptDrops() const |
QString | accessibleDescription() 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::ConnectionType type = Qt::AutoConnection) |
(since 6.3) QAction * | addAction(const QIcon &icon, const QString &text, const QObject *receiver, const char *member, Qt::ConnectionType type = Qt::AutoConnection) |
(since 6.3) QAction * | addAction(const QString &text, const QKeySequence &shortcut, const QObject *receiver, const char *member, Qt::ConnectionType type = Qt::AutoConnection) |
(since 6.3) QAction * | addAction(const QIcon &icon, const QString &text, const QKeySequence &shortcut, const QObject *receiver, const char *member, Qt::ConnectionType type = 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(int x, int y) 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 * | focusWidget() 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::GestureType gesture, Qt::GestureFlags flags = Qt::GestureFlags()) |
void | grabKeyboard() |
void | grabMouse() |
void | grabMouse(const QCursor &cursor) |
int | grabShortcut(const QKeySequence &key, Qt::ShortcutContext context = Qt::WindowShortcut) |
QGraphicsEffect * | graphicsEffect() const |
QGraphicsProxyWidget * | graphicsProxyWidget() const |
bool | hasEditFocus() const |
bool | hasFocus() const |
virtual bool | hasHeightForWidth() const |
bool | hasMouseTracking() const |
bool | hasTabletTracking() const |
int | height() const |
virtual int | heightForWidth(int w) const |
Qt::InputMethodHints | inputMethodHints() const |
virtual QVariant | inputMethodQuery(Qt::InputMethodQuery query) 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 |
virtual QSize | minimumSizeHint() const |
int | minimumWidth() const |
void | move(const QPoint &) |
void | move(int x, int y) |
QWidget * | nativeParentWidget() const |
QWidget * | nextInFocusChain() const |
QRect | normalGeometry() const |
void | overrideWindowFlags(Qt::WindowFlags flags) |
const QPalette & | palette() const |
QWidget * | parentWidget() const |
QPoint | pos() const |
QWidget * | previousInFocusChain() const |
QRect | rect() const |
void | releaseKeyboard() |
void | releaseMouse() |
void | releaseShortcut(int id) |
void | removeAction(QAction *action) |
void | render(QPaintDevice *target, const QPoint &targetOffset = QPoint(), const QRegion &sourceRegion = QRegion(), QWidget::RenderFlags renderFlags = RenderFlags(DrawWindowBackground | DrawChildren)) |
void | render(QPainter *painter, const QPoint &targetOffset = QPoint(), const QRegion &sourceRegion = QRegion(), QWidget::RenderFlags renderFlags = RenderFlags(DrawWindowBackground | DrawChildren)) |
void | repaint(const QRect &rect) |
void | repaint(const QRegion &rgn) |
void | repaint(int x, int y, int w, int h) |
void | resize(const QSize &) |
void | resize(int w, int h) |
bool | restoreGeometry(const QByteArray &geometry) |
QByteArray | saveGeometry() const |
QScreen * | screen() const |
void | scroll(int dx, int dy) |
void | scroll(int dx, int dy, const QRect &r) |
void | setAcceptDrops(bool on) |
void | setAccessibleDescription(const QString &description) |
void | setAccessibleName(const QString &name) |
void | setAttribute(Qt::WidgetAttribute attribute, bool on = true) |
void | setAutoFillBackground(bool enabled) |
void | setBackgroundRole(QPalette::ColorRole role) |
void | setBaseSize(const QSize &) |
void | setBaseSize(int basew, int baseh) |
void | setContentsMargins(int left, int top, int right, int bottom) |
void | setContentsMargins(const QMargins &margins) |
void | setContextMenuPolicy(Qt::ContextMenuPolicy policy) |
void | setCursor(const QCursor &) |
void | setEditFocus(bool enable) |
void | setFixedHeight(int h) |
void | setFixedSize(const QSize &s) |
void | setFixedSize(int w, int h) |
void | setFixedWidth(int w) |
void | setFocus(Qt::FocusReason reason) |
void | setFocusPolicy(Qt::FocusPolicy policy) |
void | setFocusProxy(QWidget *w) |
void | setFont(const QFont &) |
void | setForegroundRole(QPalette::ColorRole role) |
void | setGeometry(const QRect &) |
void | setGeometry(int x, int y, int w, int h) |
void | setGraphicsEffect(QGraphicsEffect *effect) |
void | setInputMethodHints(Qt::InputMethodHints hints) |
void | setLayout(QLayout *layout) |
void | setLayoutDirection(Qt::LayoutDirection direction) |
void | setLocale(const QLocale &locale) |
void | setMask(const QBitmap &bitmap) |
void | setMask(const QRegion ®ion) |
void | setMaximumHeight(int maxh) |
void | setMaximumSize(const QSize &) |
void | setMaximumSize(int maxw, int maxh) |
void | setMaximumWidth(int maxw) |
void | setMinimumHeight(int minh) |
void | setMinimumSize(const QSize &) |
void | setMinimumSize(int minw, int minh) |
void | setMinimumWidth(int minw) |
void | setMouseTracking(bool enable) |
void | setPalette(const QPalette &) |
void | setParent(QWidget *parent) |
void | setParent(QWidget *parent, Qt::WindowFlags f) |
void | setScreen(QScreen *screen) |
void | setShortcutAutoRepeat(int id, bool enable = true) |
void | setShortcutEnabled(int id, bool enable = true) |
void | setSizeIncrement(const QSize &) |
void | setSizeIncrement(int w, int h) |
void | setSizePolicy(QSizePolicy) |
void | setSizePolicy(QSizePolicy::Policy horizontal, QSizePolicy::Policy vertical) |
void | setStatusTip(const QString &) |
void | setStyle(QStyle *style) |
void | setTabletTracking(bool enable) |
void | setToolTip(const QString &) |
void | setToolTipDuration(int msec) |
void | setUpdatesEnabled(bool enable) |
void | setWhatsThis(const QString &) |
void | setWindowFilePath(const QString &filePath) |
void | setWindowFlag(Qt::WindowType flag, bool on = true) |
void | setWindowFlags(Qt::WindowFlags type) |
void | setWindowIcon(const QIcon &icon) |
void | setWindowModality(Qt::WindowModality windowModality) |
void | setWindowOpacity(qreal level) |
void | setWindowRole(const QString &role) |
void | setWindowState(Qt::WindowStates windowState) |
void | setupUi(QWidget *widget) |
QSize | size() const |
virtual 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::WidgetAttribute attribute) const |
QString | toolTip() const |
int | toolTipDuration() const |
bool | underMouse() const |
void | ungrabGesture(Qt::GestureType gesture) |
void | unsetCursor() |
void | unsetLayoutDirection() |
void | unsetLocale() |
void | update(const QRect &rect) |
void | update(const QRegion &rgn) |
void | update(int x, int y, int w, int h) |
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 |
virtual int | metric(QPaintDevice::PaintDeviceMetric m) const override |
保護されたスロット
void | updateMicroFocus(Qt::InputMethodQuery query = Qt::ImQueryAll) |
マクロ
詳しい説明
ウィジェットは、ユーザーインターフェースの原子です。マウス、キーボード、その他のウィンドウシステムから受け取り、それ自身の表現をスクリーンに描画します。
QMainWindowQDialog 親ウィジェットットに埋め込まれていないウィジェットウィンドウと呼びますが、通常、ウィンドウには、フレームとタイトルバーがありますが、適切なwindow flags を使用することで、そのような装飾のないウィンドウを作成することも可能です。
すべてのウィジェットのコンストラクタは、1つまたは2つの標準引数を受け取ります:
QWidget *parent = nullptr
は新しいウィジェットの親です。これが (デフォルト)の場合、新しいウィジェットはウィンドウになります。そうでない場合、nullptr
parentの子となり、parentのジオメトリに制約されます(ウィンドウ・フラグとして を指定しない限り)。Qt::WindowQt::WindowFlags f = { }
(利用可能な場合) は、ウィンドウフラグを設定します。デフォルトは、ほとんどのウィジェットに適していますが、例えば、ウィンドウシステムフレームのないウィンドウを取得するには、特別なフラグを使用する必要があります。
QWidgetには多くのメンバ関数がありますが、直接の機能はほとんどありません。例えば、QWidgetにはフォント・プロパティがありますが、これ自体を使用することはありません。QLabel,QPushButton,QListWidget,QTabWidget など、実際の機能を提供する多くのサブクラスがあります。
トップレベルと子ウィジェット
親ウィジェットを持たないウィジェットは、常に独立したウィンドウ(トップ・レベル・ウィジェット)です。これらのウィジェットでは、setWindowTitle() とsetWindowIcon() が、それぞれタイトル・バーとアイコンを設定します。
ウィンドウ以外のウィジェットは子ウィジェットで、親ウィジェットの中に表示されます。Qt のほとんどのウィジェットは、主に子ウィジェットとして役立ちます。例えば、ボタンをトップレベル・ウィンドウとして表示することは可能ですが、ほとんどの人はQDialog のような他のウィジェットの中にボタンを置くことを好みます。
上図は、QGridLayout が提供するレイアウトで、QGroupBox ウィジェットがさまざまな子ウィジェットを保持するために使用されている様子を示しています。QLabel の子ウィジェットは、フル・サイズを示すためにアウトライン化されています。
QWidgetを使用して子ウィジェットを保持する場合、通常は親QWidgetにレイアウトを追加します。詳細はレイアウト管理を参照してください。
複合ウィジェット
子ウィジェットをグループ化するコンテナとしてウィジェットを使用する場合、複合ウィジェットとして知られています。コンポジット・ウィジェットは、必要なビジュアル・プロパティを持つウィジェット(QFrame など)を作成し、通常レイアウトで管理される子ウィジェットを追加することで作成できます。
複合ウィジェットは、QWidget やQFrame などの標準ウィジェットをサブクラス化し、サブクラスのコンストラクタで必要なレイアウトと子ウィジェットを追加することによっても作成できます。Qt で提供されている多くの例ではこの方法を使用しており、Qtウィジェット・チュートリアルでも取り上げています。
カスタムウィジェットとペイント
QWidget はQPaintDevice のサブクラスなので、サブクラスを使用して、QPainter クラスのインスタンスで一連のペイント操作を使用して構成されるカスタムコンテンツを表示することができます。このアプローチは、アプリケーションによってアイテムがシーンに追加され、フレームワーク自体によってレンダリングされる、グラフィックス・ビュー・フレームワークによって使用されるキャンバス・スタイルのアプローチとは対照的です。
各ウィジェットは、paintEvent() 関数内からすべてのペイント操作を実行します。この関数は、外部からの変更やアプリケーションからの要求によって、ウィジェットの再描画が必要になったときに呼び出されます。
アナログ時計の例では、単純なウィジェットがペイントイベントを処理する方法を示しています。
サイズヒントとサイズポリシー
新しいウィジェットを実装する場合、ほとんどの場合、sizeHint() を再実装して、ウィジェットの妥当なデフォルト・サイズを提供し、setSizePolicy() で正しいサイズ・ポリシーを設定すると便利です。
デフォルトでは、サイズ・ヒントを提供しない複合ウィジェットは、子ウィジェットのスペース要件に従ってサイズが設定されます。
サイズ・ポリシーによって、レイアウト管理システムのデフォルトの動作を適切に設定することができます。デフォルトのサイズポリシーは、サイズヒントがウィジェットの好ましいサイズを表すことを示し、多くのウィジェットではこれで十分なことが多いです。
注意: トップレベルウィジェットのサイズは、デスクトップの縦横の2/3に制限されます。これらの境界が不十分な場合、手動でウィジェットをresize() することができます。
イベント
ウィジェットは、通常ユーザのアクションによって発生するイベントに反応します。Qt は、各イベントに関する情報を含むQEvent サブクラスのインスタンスで特定のイベントハンドラ関数を呼び出すことで、イベントをウィジェットに配信します。
ウィジェットに子ウィジェットしか含まれていない場合、イベントハンドラを実装する必要はないでしょう。子ウィジェットでマウス・クリックを検出したい場合は、子ウィジェットのunderMouse() 関数をウィジェットのmousePressEvent() の内部で呼び出します。
Scribbleの例では、マウスの移動、ボタンの押下、ウィンドウのリサイズを処理するために、より広範なイベント・セットを実装しています。
あなた自身のウィジェットの動作と内容を提供する必要がありますが、ここでは、QWidgetに関連するイベントの簡単な概要を、最も一般的なものから説明します:
- paintEvent() は、ウィジェットを再描画する必要があるときに呼び出されます。カスタムコンテンツを表示するすべてのウィジェットは、これを実装する必要があります。QPainter を使用したペイントは、paintEvent() か、paintEvent() によって呼び出される関数の中でしか実行できません。
- resizeEvent() は、ウィジェットのサイズが変更されたときに呼び出されます。
- mousePressEvent() は、マウスカーソルがウィジェット内にあるときにマウスボタンが押されたとき、またはgrabMouse() を使用してウィジェットがマウスをつかんだときに呼び出されます。マウスを離さずに押すことは、実質的にgrabMouse() を呼び出すことと同じです。
- mouseReleaseEvent() は、マウスボタンが離されたときに呼び出されます。ウィジェットがマウス・リリース・イベントを受け取るのは、対応するマウス・プレス・イベントを受け取ったときです。つまり、ユーザがウィジェットの内部でマウスを押した後、マウスボタンを離す前にマウスを他の場所にドラッグすると、ウィジェットはリリース・イベントを受け取ります。1つ例外があります。マウスボタンを押したままにしている間にポップアップメニューが表示された場合、このポップアップはマウスイベントを即座に奪います。
- mouseDoubleClickEvent() は,ユーザがウィジェットをダブルクリックしたときに呼び出されます.ユーザがダブルクリックすると、ウィジェットはマウス押下イベント、マウスリリース・イベント、(マウスクリック・イベント、)2回目のマウス押下イベント、このイベント、そして最後に2回目のマウスリリース・イベントを受信します。(この操作中にマウスが固定されていない場合、いくつかのマウス移動イベントも受信することがある)。2回目のクリックが来るまで、クリックとダブルクリックを区別することはできません。(ほとんどのGUIの本が、ダブルクリックを別のアクションのトリガーにするのではなく、シングルクリックの延長にすることを推奨している理由の1つです)。
キーボード入力を受け付けるウィジェットでは、さらにいくつかのイベント・ハンドラを再実装する必要がある:
- 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 (キーボード・フォーカスの移動) を処理し、その他のイベントのほとんどを上記の特殊なハンドラのいずれかに渡します。
イベントとそのメカニズムについては、「イベント・システム」を参照してください。
関数とプロパティのグループ
ウィジェットスタイルシート
各プラットフォームの標準ウィジェットスタイルに加えて、ウィジェットはスタイルシートで指定されたルールに従ってスタイルを設定することもできます。この機能により、特定のウィジェットの外観をカスタマイズして、その目的をユーザーに視覚的に示すことができます。例えば、ボタンが破壊的なアクションを実行することを示すために、特定の方法でスタイルを設定することができます。
ウィジェットのスタイルシートの使い方については、Qt Style Sheetsドキュメントで詳しく説明しています。
透過とダブルバッファリング
QWidget は自動的にダブルバッファリングされるので、paintEvent() でダブルバッファリングのコードを書いてちらつきを避ける必要はありません。
親ウィジェットの内容は、Qt::WA_PaintOnScreen が設定されていない限り、デフォルトで各子ウィジェットに伝搬されます。不規則な領域を更新したり(長方形でない子ウィジェットを作成する)、アルファ成分が完全でない色でペイントしたりすることで、この機能を利用するカスタムウィジェットを書くことができます。次の図は、カスタムウィジェットの属性とプロパティをどのように微調整して、さまざまな効果を得られるかを示しています。
上の図では、領域が削除された半透明の矩形子ウィジェットが作成され、親ウィジェット(pixmapを示すQLabel )に追加されています。そして、異なる効果を得るために、異なるプロパティとウィジェットの属性が設定されます:
- 左のウィジェットには、追加のプロパティやウィジェット属性は設定されていません。このデフォルトの状態は、透明度があったり、不規則な形をしていたり、不透明なブラシで全領域をペイントしないカスタムウィジェットのほとんどに適しています。
- 中央のウィジェットには、autoFillBackground プロパティが設定されています。このプロパティは、ウィジェットがデフォルトの背景を提供することに依存し、不透明なブラシでその領域全体をペイントしないカスタムウィジェットで使用されます。
- 右のウィジェットには、Qt::WA_OpaquePaintEvent ウィジェット属性が設定されています。これは、ウィジェットがその領域全体を不透明色で塗ることを示します。ウィジェットの領域は、最初は初期化されておらず、図では、オーバーペイント領域を通して輝く赤い斜めのグリッドパターンで表されています。
リアルタイムのプロット・ウィジェットやグラフ・ウィジェットなど、単純な背景色を持つカスタム・ウィジェットを高速に更新するには、適切な背景色を定義し(QPalette::Window ロールでsetBackgroundRole() を使用)、autoFillBackground プロパティを設定し、必要な描画機能のみをウィジェットのpaintEvent() で実装する方がよいでしょう。
例えば、ビデオ・ストリーミング・ウィジェットのように、その領域全体を常に不透明なコンテンツでペイントするカスタム・ウィジェットを迅速に更新するには、ウィジェットの背景を再ペイントすることに関連する不要なオーバーヘッドを避けるために、ウィジェットのQt::WA_OpaquePaintEvent を設定する方が良いでしょう。
ウィジェットにQt::WA_OpaquePaintEvent ウィジェット属性と autoFillBackground プロパティの両方が設定されている場合、Qt::WA_OpaquePaintEvent 属性が優先されます。要件に応じて、どちらかを選択する必要があります。
親ウィジェットの内容は、標準 Qt ウィジェットにも伝わります。下図に示すように、親ウィジェットが非標準的な方法で装飾されている場合、予期しない結果を招くことがあります。
標準 Qt ウィジェットの描画動作をサブクラス化することなくカスタマイズできる範囲は、カスタムウィジェットに比べて若干狭くなります。通常、標準ウィジェットの外観は、autoFillBackground プロパティを設定することで実現できます。
半透明ウィンドウの作成
合成をサポートするウィンドウ・システムでは、半透明領域を持つウィンドウを作成できます。
トップレベルのウィジェットでこの機能を有効にするには、Qt::WA_TranslucentBackground 属性をsetAttribute() で設定し、部分的に透明にしたい領域で背景が不透明でない色で塗られていることを確認します。
プラットフォームに関する注意事項
- X11: この機能は、ARGBビジュアルと合成ウィンドウマネージャをサポートするXサーバーの使用に依存します。
- Windows:半透明が機能するためには、ウィジェットにQt::FramelessWindowHint windowフラグが設定されている必要があります。
- macOS: 半透明を動作させるには、ウィジェットにQt::FramelessWindowHint ウィンドウフラグを設定する必要があります。
ネイティブ・ウィジェット vs エイリアン・ウィジェット
エイリアンウィジェットは、ウィンドウシステムにとって未知のウィジェットです。これらのウィジェットには、ネイティブ・ウィンドウ・ハンドルが関連付けられていません。この機能により、ウィジェットのペイントやリサイズが大幅に高速化され、ちらつきがなくなります。
ネイティブ・ウィンドウを使用した旧来の動作が必要な場合は、以下のオプションのいずれかを選択してください:
- お使いの環境で
QT_USE_NATIVE_WINDOWS=1
を使用する。 - アプリケーションにQt::AA_NativeWindows 属性を設定します。すべてのウィジェットがネイティブ・ウィジェットになります。
- ウィジェットにQt::WA_NativeWindow 属性を設定します:ウィジェット自身とそのすべての祖先がネイティブになります(Qt::WA_DontCreateNativeAncestors が設定されていない場合)。
- QWidget::winId を呼び出して、ネイティブ・ウィンドウを強制します (これは 3 を意味します)。
- ネイティブ・ウィンドウを強制するためにQt::WA_PaintOnScreen 属性を設定します (これは 3 を意味します)。
QEvent 、QPainter 、QGridLayout 、QBoxLayoutも参照 。
メンバ型ドキュメント
enum QWidget::RenderFlag
flags QWidget::RenderFlags
この列挙型は、QWidget::render() を呼び出すときにウィジェットをレンダリングする方法を記述します。
定数 | 値 | 説明 |
---|---|---|
QWidget::DrawWindowBackground | 0x1 | このオプションを有効にすると、autoFillBackground が設定されていなくても、ウィジェットの背景がターゲットにレンダリングされます。デフォルトでは、このオプションは有効です。 |
QWidget::DrawChildren | 0x2 | このオプションを有効にすると、ウィジェットの子はターゲットに再帰的にレンダリングされる。デフォルトでは、このオプションは有効です。 |
QWidget::IgnoreMask | 0x4 | このオプションを有効にすると、ターゲットへのレンダリング時にウィジェットのQWidget::mask() は無視される。デフォルトでは、このオプションは無効です。 |
RenderFlags 型は、QFlags<RenderFlag> の typedef です。これは、RenderFlag値のORの組み合わせを格納します。
プロパティの説明
acceptDrops : bool
このプロパティは、このウィジェットでドロップイベントが有効かどうかを保持する。
このプロパティをtrueに設定すると、このウィジェットがドロップイベントを受け付けることができることをシステムに通知します。
ウィジェットがデスクトップ (windowType() ==Qt::Desktop) の場合、他のアプリケーションがデスクトップを使用していると、これは失敗する可能性があります; acceptDrops() を呼び出して、これが発生するかどうかをテストできます。
警告 警告: ドラッグ・アンド・ドロップ・イベント・ハンドラ内でこのプロパティを変更しないでください。
デフォルトでは、このプロパティはfalse
です。
アクセス関数:
bool | acceptDrops() const |
void | setAcceptDrops(bool on) |
ドラッグ&ドロップも参照してください 。
accessibleDescription : QString
このプロパティは、支援技術によって見られるウィジェットの説明を保持する。
ウィジェットのアクセシブルな説明は、ウィジェットが何をするかを伝える必要があります。accessibleName 、短く簡潔な文字列(例:Save)であるべきですが、説明は、現在のドキュメントを保存するなど、より多くのコンテキストを与えるべきです。
このプロパティはローカライズする必要があります。
デフォルトでは、このプロパティには空の文字列が含まれ、Qtはこの情報を提供するためにツールチップを使用することに戻ります。
アクセス関数:
QString | accessibleDescription() const |
void | setAccessibleDescription(const QString &description) |
QWidget::accessibleName およびQAccessibleInterface::text()も参照してください 。
accessibleName : QString
このプロパティは、支援技術によって表示されるウィジェットの名前を保持します。
これは、スクリーン・リーダーなどの支援技術がこのウィジェットを通知する主な名前です。ほとんどのウィジェットでは、このプロパティを設定する必要はありません。例えば、QPushButton の場合、ボタンのテキストが使用されます。
ウィジェットがテキストを提供しない場合、このプロパティを設定することが重要です。例えば、アイコンのみを含むボタンは、スクリーン・リーダーに対応するために、このプロパティを設定する必要があります。名前は短く、ウィジェットによって伝達される視覚情報と同等でなければならない。
このプロパティは、ローカライズされなければならない。
デフォルトでは、このプロパティは空文字列を含む。
アクセス関数:
QString | accessibleName() const |
void | setAccessibleName(const QString &name) |
QWidget::accessibleDescription とQAccessibleInterface::text()も参照のこと 。
autoFillBackground : bool
このプロパティは、ウィジェットの背景が自動的に塗りつぶされるかどうかを保持する。
このプロパティを有効にすると、Qt は paint イベントを呼び出す前にウィジェットの背景を塗りつぶします。使用される色は、ウィジェットのpalette からQPalette::Window カラーロールによって定義されます。
さらに、WA_OpaquePaintEvent または WA_NoSystemBackground 属性が設定されていない限り、Windows は常に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 : const QRect
このプロパティは、ウィジェットの子の外接矩形を保持します。
非表示の子は除外されます。
デフォルトでは、子プロパティを持たないウィジェットの場合、このプロパティには、原点に位置する幅と高さがゼロの矩形が格納されます。
アクセス関数:
QRect | childrenRect() const |
childrenRegion() およびgeometry()も参照 。
[read-only]
childrenRegion : const 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 は例外である。
いくつかのウィジェットは、無効化されるとそれ自身を異なるように表示します。例えば、ボタンはラベルが灰色で表示されます。ウィジェットが有効または無効になるタイミングを知る必要がある場合、QEvent::EnabledChange 型でchangeEvent() を使用できます。
ウィジェットを無効にすると、そのすべての子ウィジェットが暗黙的に無効になります。それぞれを有効にすると、明示的に無効化されていない限り、すべての子ウィジェットが有効になります。親ウィジェットが無効のまま、ウィンドウでない子ウィジェットを明示的に有効にすることはできません。
デフォルトでは、このプロパティはtrue
です。
アクセス関数です:
bool | isEnabled() const |
void | setEnabled(bool) |
isEnabledTo()、QKeyEvent 、QMouseEvent 、changeEvent()も参照のこと 。
[read-only]
focus : const 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 ウィジェットのコンテンツをレンダリングするために使用される現在のスタイルは、ウィジェットのフォントを使用するかどうかを自由に選択できます。特に、GTKスタイル、Macスタイル、Windows Vistaスタイルのような特定のスタイルは、プラットフォームのネイティブなルック&フィールに合わせるために、ウィジェットフォントに特別な修正を適用します。このため、ウィジェットのフォントにプロパティを割り当てても、ウィジェットの外観が変わるとは限りません。代わりに、スタイルシートを適用することができます。
注意: Qt スタイルシートがsetFont() と同じウィジェットで使用されている場合、設定が衝突するとスタイルシートが優先されます。
関数にアクセスしてください:
const QFont & | font() const |
void | setFont(const QFont &) |
fontInfo() およびfontMetrics()も参照してください 。
[read-only]
frameGeometry : const QRect
ウィンドウフレームを含む親ウィジェットに対するウィジェットのジオメトリ。
ウィンドウのジオメトリの概要については、ウィンドウのジオメトリのドキュメントを参照してください。
デフォルトでは、このプロパティは、ユーザのプラットフォームとスクリーンのジオメトリに依存する値を含みます。
アクセス関数:
QRect | frameGeometry() const |
geometry()、x()、y()、pos()も参照してください 。
[read-only]
frameSize : const QSize
このプロパティは、ウィンドウフレームを含むウィジェットのサイズを保持します。
デフォルトでは、このプロパティは、ユーザのプラットフォームとスクリーン形状に依存する値を含む。
アクセス関数:
QSize | frameSize() const |
[read-only]
fullScreen : const bool
このプロパティは、ウィジェットがフルスクリーンモードで表示されるかどうかを保持する。
フルスクリーンモードのウィジェットは、スクリーン領域全体を占有し、タイトルバーなどのウィンドウ装飾を表示しない。
デフォルトでは、このプロパティはfalse
です。
アクセス関数です:
bool | isFullScreen() const |
windowState()、minimized 、maximizedも参照 。
geometry : QRect
このプロパティは、ウィジェットの親に対する相対的なジオメトリを保持し、ウィンドウ・フレームを除きます。
ジオメトリを変更する場合、ウィジェットが表示されていれば、移動イベント (moveEvent()) および/またはサイズ変更イベント (resizeEvent()) を即座に受け取ります。ウィジェットが現在表示されていない場合、表示される前に適切なイベントを受け取ることが保証されます。
サイズ・コンポーネントは、minimumSize() とmaximumSize() で定義された範囲外にある場合、調整されます。
警告 resizeEvent () またはmoveEvent() の内部で setGeometry() を呼び出すと、 無限再帰になる可能性があります。
ウィンドウのジオメトリに関する問題の概要については、ウィンドウのジオメトリのドキュメントを参照してください。
デフォルトでは、このプロパティには、ユーザーのプラットフォームと画面のジオメトリに依存する値が格納されます。
アクセス関数:
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 : const int
このプロパティは、ウィンドウフレームを除いたウィジェットの高さを保持します。
ウィンドウのジオメトリの概要については、ウィンドウのジオメトリのドキュメントを参照してください。
デフォルトでは、このプロパティには、ユーザのプラットフォームと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 : const 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 : const 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
このプロパティは、ウィジェットの最大サイズをピクセル単位で保持します。
ウィジェットは、ウィジェットの最大サイズより大きなサイズにリサイズすることはできません。
デフォルトでは、このプロパティは、widthとheightの両方が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 : const 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 : const 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も参照のこと 。
[read-only]
modal : const bool
このプロパティは、ウィジェットがモーダルウィジェットであるかどうかを保持します。
このプロパティは、ウィンドウに対してのみ意味を持ちます。モーダルウィジェットは、他のすべてのウィンドウのウィジェットが入力を取得するのを防ぎます。
デフォルトでは、このプロパティはfalse
です。
アクセス関数:
bool | isModal() const |
isWindow(),windowModality,QDialogも参照 。
mouseTracking : bool
このプロパティは、ウィジェットでマウス・トラッキングが有効かどうかを保持します。
マウストラッキングが無効な場合(デフォルト)、ウィジェットは、マウス移動中に少なくとも1つのマウスボタンが押されたときのみ、マウス移動イベントを受信する。
マウストラッキングが有効な場合、ボタンが押されていなくても、ウィジェットはマウス移動イベントを受信する。
アクセス関数:
bool | hasMouseTracking() const |
void | setMouseTracking(bool enable) |
mouseMoveEvent()も参照 。
[read-only]
normalGeometry : const 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 ウィジェットのコンテンツをレンダリングするために使用される現在のスタイルは、ウィジェット パレットから色とブラシを自由に選択できます。特に、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 StyleSheetsも参照してください 。
pos : QPoint
このプロパティは、親ウィジェット内でのウィジェットの位置を保持します。
ウィジェットがウィンドウの場合、位置はデスクトップ上のウィジェットの位置となります。
位置を変更すると、ウィジェットが表示されている場合は、すぐに移動イベント (moveEvent()) を受け取ります。ウィジェットが現在表示されていない場合、表示される前にイベントを受け取ることが保証されます。
デフォルトでは、このプロパティは原点を参照する位置を含みます。
警告 moveEvent () の内部で move() またはsetGeometry() を呼び出すと、無限再帰になる可能性があります。
ウィンドウのジオメトリに関する問題の概要については、ウィンドウのジオメトリに関するドキュメントを参照してください。
注意: すべてのウィンドウ・システムがトップ・レベルのウィンドウ位置の設定や問い合わせをサポートしているわけではありません。そのようなシステムでは、プログラムでウィンドウを動かしても効果がない場合があり、QPoint(0, 0)
のような人工的な値が現在の位置に返されることがあります。
アクセス関数:
QPoint | pos() const |
void | move(int x, int y) |
void | move(const QPoint &) |
frameGeometry 、size 、x ()、y ()も参照 。
[read-only]
rect : const QRect
このプロパティは、ウィンドウフレームを除いたウィジェットの内部ジオメトリを保持します。
rect プロパティはQRect(0, 0,width(),height()) に等しい。
ウィンドウのジオメトリの概要については、ウィンドウのジオメトリのドキュメントを参照してください。
デフォルトでは、このプロパティは、ユーザーのプラットフォームとスクリーンのジオメトリに依存する値を含んでいます。
アクセス関数:
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 : const QSize
このプロパティは、ウィジェットの推奨サイズを保持する。
このプロパティの値が無効なサイズの場合、推奨サイズはありません。
sizeHint() のデフォルト実装は、このウィジェットのレイアウトがない場合は無効なサイズを返し、そうでない場合はレイアウトの推奨サイズを返します。
アクセス関数:
virtual QSize | sizeHint() const |
QSize::isValid(),minimumSizeHint(),sizePolicy(),setMinimumSize(),updateGeometry()も参照 。
sizeIncrement : QSize
このプロパティは、ウィジェットのサイズ増分を保持します。
baseSizeユーザがウィンドウのサイズを変更するとき、サイズは横方向に sizeIncrement().width() ピクセルのステップで移動し、縦方向に sizeIncrement.height() ピクセルのステップで移動します。望ましいウィジェットのサイズは、非負の整数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'sは通常正方形なので、両方向に成長することができます。異なる方向をサポートするウィジェット (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 Sheetsドキュメントで説明されているように、ウィジェットのスタイルに対するカスタマイズのテキスト記述が含まれています。
Qt 4.5 以降、Qt スタイルシートは macOS を完全にサポートしています。
警告 Qtスタイルシートは現在、カスタムQStyle サブクラスには対応していません。将来のリリースで対応する予定です。
アクセス関数:
QString | styleSheet() const |
void | setStyleSheet(const QString &styleSheet) |
setStyle(),QApplication::styleSheet,Qt StyleSheetsも参照してください 。
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イベントを受け取ります。非表示イベントと表示イベントの間に、CPUサイクルを浪費して情報を準備したり、ユーザーに表示したりする必要はありません。例えば、ビデオ・アプリケーションでは、新しいフレームの生成を停止するだけでよい。
画面上の他のウィンドウに隠されているウィジェットは、表示されているとみなされます。アイコン化されたウィンドウや、別の仮想デスクトップ上に存在するウィンドウも同様です(この概念をサポートするプラットフォーム上)。ウィジェットは、そのマッピングステータスがウィンドウシステムによって変更されると、自発的な表示イベントと非表示イベントを受け取ります。例えば、ユーザーがウィンドウを最小化すると自発的な非表示イベントが発生し、ウィンドウが再び復元されると自発的な表示イベントが発生します。
setVisible()関数を再実装する必要はほとんどありません。ウィジェットを表示する前に何らかの設定を変更する必要がある場合は、代わりにshowEvent() を使用してください。遅延初期化を行う必要がある場合は、event() 関数に配信される Polish イベントを使用してください。
アクセス関数:
bool | isVisible() const |
virtual void | setVisible(bool visible) |
show(),hide(),isHidden(),isVisibleTo(),isMinimized(),showEvent(),hideEvent()も参照してください 。
whatsThis : QString
このプロパティは、ウィジェットのWhat's Thisヘルプ・テキストを保持します。
デフォルトでは、このプロパティには空の文字列が含まれます。
アクセス関数:
QString | whatsThis() const |
void | setWhatsThis(const QString &) |
QWhatsThis 、QWidget::toolTip 、QWidget::statusTipも参照してください 。
[read-only]
width : const int
このプロパティは、ウィンドウ・フレームを除いたウィジェットの幅を保持します。
ウィンドウのジオメトリ問題の概要については、ウィンドウのジオメトリのドキュメントを参照してください。
注意: この関数は、マルチスクリーンデスクトップ上のスクリーンの幅を求めるために使用しないでください。詳細については、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) に置かれる。
アクセス関数:
Qt::WindowFlags | windowFlags() const |
void | setWindowFlags(Qt::WindowFlags type) |
アクセス関数:windowType()、setWindowFlag()、Window Flags の例も参照してください 。
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[*] - Text Editor")。ウィンドウが変更されなければ、プレースホルダは単に削除されます。
ウィジェットが修正されたものとして設定されると、そのすべての祖先も修正されたものとして設定されることに注意してください。ただし、ウィジェットで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 : const int
このプロパティは、ウィジェットの x 座標を保持します。
ウィンドウのジオメトリの概要については、ウィンドウのジオメトリのドキュメントを参照してください。
デフォルトでは、このプロパティの値は0です。
アクセス関数:
int | x() const |
frameGeometry,y,posも参照してください 。
[read-only]
y : const int
このプロパティは、ウィジェットの親からの相対的なy座標を保持し、ウィンドウフレームを含みます。
ウィンドウのジオメトリの概要については、ウィンドウのジオメトリのドキュメントを参照してください。
デフォルトでは、このプロパティの値は0です。
アクセス関数:
int | y() const |
frameGeometry 、x 、posも参照してください 。
メンバ関数のドキュメント
[since 6.3]
QAction *QWidget::addAction(const QIcon &icon, const QString &text)
[since 6.3]
QAction *QWidget::addAction(const QIcon &icon, const QString &text, const QKeySequence &shortcut)
[since 6.3]
QAction *QWidget::addAction(const QString &text)
[since 6.3]
QAction *QWidget::addAction(const QString &text, const QKeySequence &shortcut)
これらの便利関数は、テキストtext 、アイコンicon 、ショートカットshortcut があれば、それを持つ新しいアクションを作成します。
関数は、新しく作成されたアクションをウィジェットのアクションリストに追加し、それを返します。
QWidget は、返された の所有権を取ります。QAction
この関数はQt 6.3で導入されました。
[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)
[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 QString &text, const QObject *receiver, const char *member, Qt::ConnectionType type = Qt::AutoConnection)
これはオーバーロードされた関数です。
この便利な関数は、テキストtext 、アイコンicon 、およびショートカットshortcut (あれば)を持つ新しいアクションを作成します。
アクションのtriggered() シグナルはreceiver のmember スロットに接続されます。この関数は、新しく作成したアクションをウィジェットのアクションリストに追加して返します。
QWidget この関数は、返された の所有権を取ります。QAction
この関数はQt 6.3で導入されました。
[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 QIcon &icon, 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 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)
これはオーバーロードされた関数です。
これらの便利関数は、テキストtext 、アイコンicon 、ショートカットshortcut があれば、それを持つ新しいアクションを作成します。
Qt::ConnectionTypeアクションのtriggered() シグナルは、あたかもQObject::connect(action, &QAction::triggered, args...) の呼び出しによって接続され、args を完全に転送します。
この関数は、新しく作成されたアクションをウィジェットのアクションリストに追加し、それを返します。
QWidget は、返された の所有権を取ります。QAction
この関数はQt 6.3で導入されました。
[explicit]
QWidget::QWidget(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())
ウィジェットフラグをf に設定して、parent の子であるウィジェットを構築します。
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の場合、アプリケーションが現在アクティブでないときにこれを呼んでも、アクティブ・ウィンドウにはなりません。ウィンドウが何らかの方法で変更されたことを示すために、タスクバーエントリーの色が変更されます。これは、マイクロソフトが、ユーザーが現在別のアプリケーションで行っていることを、アプリケーションが中断することを許可していないためです。
isActiveWindow ()、window ()、show ()も参照の こと。
void QWidget::addAction(QAction *action)
アクションaction をこのウィジェットのアクションリストに追加します。
すべてのQWidgetsは、QActionのリストを持っています。しかし、これらはさまざまな方法でグラフィカルに表現できます。actions() によって返されるQAction リストのデフォルトの使用方法は、コンテキストQMenu を作成することです。
QWidget は各アクションを1つだけ持つべきで、すでに持っているアクションを追加しても、同じアクションが2度ウィジェットに入ることはありません。
action の所有権は、このQWidget には移譲されません。
removeAction(),insertAction(),actions(),QMenuも参照のこと 。
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 を送信します。 ウィジェットは、accepts close イベントを受信すると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)
新しいウィジェット・ウィンドウを作成します。
パラメータwindow,initializeWindow,destroyOldWindow は Qt 5 では無視されます。QWindow::fromWinId() を使用して、外部ウィンドウをラップするQWindow を作成し、代わりにそれをQWidget::createWindowContainer() に渡してください。
createWindowContainer() およびQWindow::fromWinId()も参照してください 。
[static]
QWidget *QWidget::createWindowContainer(QWindow *window, QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())
QWidget ベースのアプリケーションにwindow を埋め込むためのQWidget を作成します。
ウィンドウ・コンテナはparent の子として作成され、ウィンドウ・フラグflags を持つ。
ウィンドウがコンテナに埋め込まれると、コンテナはウィンドウのジオメトリと可視性を制御する。埋め込まれたウィンドウでQWindow::setGeometry()、QWindow::show()、QWindow::hide() を明示的に呼び出すことは推奨されない。
コンテナは、window の所有権を引き継ぐ。 ウィンドウは、QWindow::setParent() を呼び出すことで、ウィンドウコンテナから削除できる。
ウィンドウ・コンテナは、その子であるトップレベル・ウィンドウに ネイティブの子ウィンドウとしてアタッチされる。ウィンドウコンテナがQAbstractScrollArea またはQMdiArea の子として使用される場合、このユースケースで適切なスタックとクリッピングを可能にするために、親チェーン内のすべてのウィジェットに対してnative window が作成されます。ウィンドウコンテナのネイティブウィンドウを作成することでも、適切なスタックとクリッピングが可能になります。これはウィンドウ・コンテナを表示する前に行う必要があります。多くのネイティブ子ウィンドウを持つアプリケーションは、パフォーマンスの問題に悩まされる可能性があります。
ウィンドウコンテナにはいくつかの既知の制限があります:
- スタック順序; 埋め込みウィンドウは、不透明なボックスとしてウィジェット階層の上にスタックします。複数のウィンドウ コンテナ インスタンスが重なっている場合のスタック順序は未定義です。
- レンダリングの統合; ウィンドウ コンテナは、QGraphicsProxyWidget,QWidget::render() または同様の機能とは相互運用しません。
- フォーカス処理; ウィンドウコンテナインスタンスに任意のフォーカスポリシーを持たせることが可能であり、QWindow::requestActivate() の呼び出しによってウィンドウにフォーカスを委譲する。ただし、QWindow インスタンスから通常のフォーカス チェーンに戻るかどうかは、QWindow インスタンスの実装次第です。例えば、Qt Quick ベースのウィンドウにタブフォーカスで入った場合、それ以上タブを押しても QML アプリケーションの内部でしか循環しない可能性が高いです。また、QWindow::requestActivate()が実際にウィンドウにフォーカスを与えるかどうかはプラットフォームに依存します。
- QWidget ベースのアプリケーションで多数のウィンドウコンテナを使用すると、 アプリケーション全体のパフォーマンスが大きく低下する可能性があります。
- 6.7以降では、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 が真の場合、ウィジェット・ウィンドウを破棄します。
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 パラメータで渡されるウィジェットのエンター・イベントを受け取るために、サブクラスで再実装することができる。
マウスカーソルがウィジェットに入ると、イベントがウィジェットに送られます。
leaveEvent(),mouseMoveEvent(),event()も参照してください 。
[override virtual protected]
bool QWidget::event(QEvent *event)
再インプリメント:QObject::event(QEvent *e)。
これはメインのイベント・ハンドラで、イベントevent を処理します。サブクラスでこの関数を再実装することもできますが、代わりに特殊なイベント・ハンドラの1つを使用することをお勧めします。
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 パラメータで渡されます。
ウィジェットは通常、フォーカス・イベントを受け取るために、Qt::NoFocus 以外にsetFocusPolicy() を指定する必要があります。(アプリケーション・プログラマは、通常はフォーカスを受け取らないウィジェットでも、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 が真なら、この関数は前方を検索し、next が偽なら、後方を検索する。
この関数を再実装したい場合があります。たとえば、ウェブ・ブラウザはこの関数を再実装して、"現在のアクティブなリンク "を前方または後方に移動し、"ページ "上の最後のリンクまたは最初のリンクに到達したときだけfocusNextPrevChild()を呼び出すことができます。
子ウィジェットは親ウィジェットで focusNextPrevChild() を呼び出しますが、フォーカスをどこに移すかは、子ウィジェットを含むウィンドウだけが決定します。オブジェクトに対してこの関数を再実装することで、すべての子ウィジェットのフォーカスのトラバーサルを制御できるようになります。
focusNextChild() およびfocusPreviousChild()も参照してください 。
[virtual protected]
void QWidget::focusOutEvent(QFocusEvent *event)
このイベント・ハンドラをサブクラスに再実装すると、ウィジェットのキーボード・フォーカス・イベント(フォーカスが失われた)を受け取ることができます。イベントはevent パラメータで渡されます。
ウィジェットは通常、フォーカス・イベントを受け取るために、Qt::NoFocus 以外にsetFocusPolicy() を指定する必要があります。(アプリケーション・プログラマは、通常はフォーカスを受け付けないウィジェットであっても、どのウィジェットでも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
foreground roleを返します。
foreground ロールは、前景を描画するために使用されるウィジェットのpalette からの色を定義します。
前景ロールが明示的に設定されていない場合、この関数は背景ロールと対照的なロールを返します。
setForegroundRole() およびbackgroundRole()も参照してください 。
[invokable]
QPixmap QWidget::grab(const QRect &rectangle = QRect(QPoint(0, 0), QSize(-1, -1)))
ウィジェットを,与えられたrectangle で制限された pixmap にレンダリングします.ウィジェットに子ウィジェットがある場合,それらも適切な位置に描画されます.
無効なサイズの矩形が指定された場合(デフォルト)、ウィジェット全体が描画されます。
注意: この関数はメタオブジェクトシステムや 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)
この関数は grabMouse() をオーバーロードします。
マウス入力をつかみ、カーソルの形状を変更します。
カーソルはcursor の形状になり(マウス・フォーカスがつかまれている間)、releaseMouse() が呼び出されるまで()、このウィジェットだけがマウス・イベントを受け取ります。
警告 マウスをつかむとターミナルがロックされる可能性があります。
注釈: 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関数は、ウィジェットのグラフィック効果へのポインタを返します。
ウィジェットにグラフィック効果がない場合は、nullptr
。
setGraphicsEffect()も参照してください 。
QGraphicsProxyWidget *QWidget::graphicsProxyWidget() const
nullptr
graphicsEffect関数は、グラフィックス・ビュー内の対応する埋め込みウィジェットのプロキシ・ウィジェットを返します。
QGraphicsProxyWidget::createProxyForChildWidget() およびQGraphicsScene::addWidget() も参照 。
bool QWidget::hasEditFocus() const
このウィジェットが現在編集フォーカスを持っている場合はtrue
を返し、そうでない場合は false を返します。
この機能は Qt for Embedded Linux でのみ利用可能です。
setEditFocus() およびQApplication::navigationMode() も参照して ください。
[virtual]
bool QWidget::hasHeightForWidth() const
ウィジェットの優先高さが幅に依存する場合はtrue
を返し、そうでない場合はfalse
を返します。
[virtual]
int QWidget::heightForWidth(int w) const
幅が指定された場合、このウィジェットの好ましい高さを返しますw 。
このウィジェットにレイアウトがある場合、デフォルトの実装は、レイアウトの優先的な高さを返します。レイアウトがない場合、デフォルトの実装は、優先的な高さが幅に依存しないことを示す -1 を返します。
[slot]
void QWidget::hide()
ウィジェットを非表示にします。この関数は、setVisible(false)と同等です。
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 、Inputメソッド合成イベントを受け取るためにサブクラスで再実装することができます。このハンドラは、入力メソッドの状態が変化したときに呼び出されます。
カスタム・テキスト編集ウィジェットを作成する場合、入力メソッド・イベントを受け取るためには、Qt::WA_InputMethodEnabled window属性を明示的に(setAttribute ()関数を使用して)設定する必要があることに注意してください。
デフォルトの実装では、event->ignore()を呼び出し、Input Methodイベントを拒否します。詳細はQInputMethodEvent のドキュメントを参照してください。
event() およびQInputMethodEventも参照して ください。
[virtual]
QVariant QWidget::inputMethodQuery(Qt::InputMethodQuery query) const
このメソッドは入力ウィジェットにのみ関係します。このメソッドは、入力メソッドによって、ウィジェットのプロパティのセットを照会するために使用されます。
query は、照会されるプロパティを指定します。
inputMethodEvent()、QInputMethodEvent 、QInputMethodQueryEvent 、inputMethodHintsも参照のこと 。
void QWidget::insertAction(QAction *before, QAction *action)
アクションbefore の前に、アクションaction をこのウィジェットのアクションリストに挿入します。before がnullptr
であるか、before がこのウィジェットの有効なアクションでない場合、アクションを追加します。
QWidget は、各アクションを1つだけ持つべきです。
removeAction()、addAction()、QMenu 、contextMenuPolicy 、actions()も参照 。
void QWidget::insertActions(QAction *before, const QList<QAction *> &actions)
アクションbefore の前に、アクションactions をこのウィジェットのアクションリストに挿入します。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 までの親も、明示的に非表示にされていない場合に発生します。
この関数は、ウィジェットが画面上の他のウィンドウによって隠されている場合でも真を返します。
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.
virtualQPaintDevice::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::pos() は、このウィジェットからの相対的なマウスカーソルの位置を報告します。押したり離したりするイベントの場合、位置は通常、最後のマウス移動イベントの位置と同じです。これは Qt ではなく、基本的なウィンドウ・システムの機能です。
マウスが動いている間、すぐにツールチップを表示したい場合(例えば、QMouseEvent::pos()でマウス座標を取得し、それをツールチップとして表示したい場合)、まず、上記のようにマウストラッキングを有効にする必要があります。それから、ツールチップが直ちに更新されるようにするために、mouseMoveEvent() の実装でsetToolTip() の代わりにQToolTip::showText() を呼び出す必要があります。
setMouseTracking()、mousePressEvent()、mouseReleaseEvent()、mouseDoubleClickEvent()、event()、QMouseEvent 、およびScribbleExampleも参照してください 。
[virtual protected]
void QWidget::mousePressEvent(QMouseEvent *event)
このイベント・ハンドラ(イベントevent )は、サブクラスで再実装して、ウィジェットのマウス押下イベントを受け取ることができます。
mousePressEvent()で新しいウィジェットを作成する場合、mouseReleaseEvent()は、基礎となるウィンドウ・システム(またはX11ウィンドウ・マネージャ)、ウィジェットの位置、およびその他によって、期待する場所に終わらないかもしれません。
デフォルトの実装では、ウィンドウの外側をクリックするとポップアップ・ウィジェットが閉じます。他のタイプのウィジェットでは何もしません。
mouseReleaseEvent(),mouseDoubleClickEvent(),mouseMoveEvent(),event(),QMouseEvent, およびScribbleExampleも参照してください 。
[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_generic_MSG" | MSG | LRESULT |
macOS | "NSEvent" | NSEvent * LESULT | |
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 で渡されるペイントイベントを受け取るために、サブクラスで再実装することができます。
ペイントイベントは、ウィジェットの全部または一部を再ペイントする要求です。以下のいずれかの理由で発生します:
多くのウィジェットは、再描画を要求されたときに、単純に表面全体を再描画できますが、低速なウィジェットでは、要求された領域のみを描画することで最適化する必要があります:QPaintEvent::region()。QListView やQTableView などがそうです。
Qt はまた、複数のペイントイベントを 1 つにまとめることで、ペイントの高速化を試みています。update() が複数回呼び出された場合や、ウィンドウシステムが複数のペイントイベントを送信した場合、Qt はこれらのイベントをより大きな領域を持つ 1 つのイベントに統合します(QRegion::united() を参照)。repaint() 関数はこの最適化を許さないので、可能な限りupdate() を使用することをお勧めします。
paint イベントが発生すると、通常、更新領域は消去されているので、ウィジェットの背景にペイントすることになります。
背景は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, およびAnalogClockも参照してください 。
QWidget *QWidget::parentWidget() const
このウィジェットの親を返し、親ウィジェットがない場合はnullptr
を返します。
QWidget *QWidget::previousInFocusChain() const
previousInFocusChain 関数は、このウィジェットのフォーカス連鎖の前のウィジェットを返します。
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)
Qt のショートカットシステムから、指定されたid のショートカットを削除します。ウィジェットは、(同じキーシーケンスを持つ他のショートカットがない限り)そのショートカットのキーシーケンスのQEvent::Shortcut イベントを受け取らなくなります。
警告 Qt のショートカットシステムは、親ウィジェットが破棄されると自動的にショートカットを削除するので、通常はこの関数を使う必要はありません。この低レベル関数よりも使いやすいので、QAction やQShortcut を使ってショートカットを処理するのがベストです。また、これは高価な操作であることにも注意してください。
grabShortcut() およびsetShortcutEnabled()も参照してください 。
void QWidget::removeAction(QAction *action)
このウィジェットのアクションリストからアクションaction を削除します。
insertAction()、actions()、insertAction()も参照 。
void QWidget::render(QPaintDevice *target, const QPoint &targetOffset = QPoint(), const QRegion &sourceRegion = QRegion(), QWidget::RenderFlags renderFlags = RenderFlags(DrawWindowBackground | DrawChildren))
レンダリング方法を決定するためにrenderFlags を使用して、このウィジェットのsourceRegion をtarget にレンダリングします。レンダリングは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() 関数が再帰を引き起こすことはありません。
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(),ScribbleExampleも参照 。
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); }
ウィンドウのジオメトリに関する概要については、ウィンドウのジオメトリに関するドキュメントを参照してください。
ジオメトリとツールバーおよびドックウィジェットの状態を保存するには、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 が真の場合、このウィジェットに属性attribute を設定します。そうでない場合、属性はクリアされます。
testAttribute()も参照 。
void QWidget::setBackgroundRole(QPalette::ColorRole role)
ウィジェットの背景の役割をrole に設定します。
背景の役割は、背景のレンダリングに使用されるウィジェットのpalette からのブラシを定義します。
role がQPalette::NoRole の場合、ウィジェットは親の背景ロールを継承します。
スタイルは、パレットから自由に色を選択できることに注意してください。setBackgroundRole()で望む結果が得られない場合は、パレットを変更したり、スタイル・シートを設定することができます。
backgroundRole() およびforegroundRole()も参照 。
void QWidget::setBaseSize(int basew, int baseh)
これはオーバーロードされた関数です。
setBaseSize(QSize(basew,baseh)) に対応します。ウィジェットの基本サイズを幅basew と高さbaseh に設定します。
注: プロパティ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::setEditFocus(bool enable)
enable が true の場合、このウィジェットに編集フォーカスを持たせます。この場合、Qt::Key_Up とQt::Key_Down は通常通りウィジェットに配信されます。そうでない場合、Qt::Key_Up とQt::Key_Down を使用してフォーカスを変更します。
この機能は Qt for Embedded Linux でのみ利用可能です。
hasEditFocus() とQApplication::navigationMode()も参照してください 。
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)
このウィジェットまたはその親の1つがactive window である場合、このウィジェット(またはそのフォーカスプロキシ)にキーボード入力フォーカスを与えます。reason 引数は、この関数から送られるフォーカスイベントに渡され、ウィジェットがフォーカスを得た原因の説明を与えるために使用されます。ウィンドウがアクティブでない場合、ウィンドウがアクティブになると、ウィジェットにフォーカスが与えられます。
まず、focus about to changeイベントがフォーカスウィジェット(もしあれば)に送られ、フォーカスが失われようとしていることを伝えます。そして、フォーカスが変更されると、前のフォーカス・アイテムに focus out イベントが送られ、新しいアイテムに focus in イベントが送られ、フォーカスを受け取ったことを伝えます。(フォーカス・インとフォーカス・アウトのウィジェットが同じ場合は、何も起こりません)。
注意: 組み込みプラットフォームでは、setFocus() によって input メソッドで入力パネルが開かれることはありません。これを発生させたい場合は、自分でウィジェットにQEvent::RequestSoftwareInputPanel イベントを送信する必要があります。
setFocus() は、フォーカス・ポリシーに関係なくウィジェットにフォーカスを与えますが、キーボード・グラブはクリアしません(grabKeyboard() を参照)。
ウィジェットが非表示の場合、表示されるまでフォーカスを受け付けないことに注意してください。
警告 focusOutEvent () またはfocusInEvent() から呼び出される可能性のある関数内で setFocus() を呼び出すと、無限再帰が発生する可能性があります。
hasFocus()、clearFocus()、focusInEvent()、focusOutEvent()、setFocusPolicy()、focusWidget()、QApplication::focusWidget()、grabKeyboard()、grabMouse()、ウィジェットのキーボード・フォーカス、QEvent::RequestSoftwareInputPanelも参照してください 。
[slot]
void QWidget::setFocus()
これはオーバーロードされた関数です。
このウィジェットまたはその親の 1 つがactive window である場合、このウィジェット(またはそのフォーカスプロキシ)にキーボード入力フォーカスを与えます。
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 プロパティのセッター関数です。
void QWidget::setGraphicsEffect(QGraphicsEffect *effect)
setGraphicsEffect 関数は、ウィジェットのグラフィックス効果を設定します。
ウィジェットのエフェクトとしてeffect を設定します。このウィジェットに既にエフェクトがインストールされている場合、QWidget は、新しいeffect をインストールする前に、既存のエフェクトを削除します。
effect が別のウィジェットにインストールされているエフェクトの場合、setGraphicsEffect() は、そのウィジェットからエフェクトを削除し、このウィジェットにインストールします。
QWidget は の所有権を取得します。effect
注: この関数は、それ自身とそのすべての子に効果を適用します。
注意: グラフィックス効果は、QGLWidget、QOpenGLWidget 、QQuickWidget などの OpenGL ベースのウィジェットではサポートされていません。
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); 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 ®ion)
これはオーバーロードされた関数です。
ウィジェットのうち、region に重なる部分のみを可視化する。領域がウィジェットのrect() の外側のピクセルを含む場合、その領域のウィンドウシステムコントロールは、プラットフォームによって表示されたりされなかったりします。
QRegion では、任意に複雑な領域を作成することができるので、ウィジェットのマスクは、最も型破りな形状のウィンドウに合わせて作成することができ、ウィジェットに穴を開けて表示することもできます。領域が特に複雑な場合、この効果は遅くなる可能性があることに注意してください。
ウィジェット・マスクは、アプリケーションがマスクの外側の領域のマウス・イベントを望まないことをウィンドウ・システムに示唆するために使われる。ほとんどのシステムでは、マスクは粗いビジュアルクリッピングをもたらします。滑らかなウィンドウ・エッジを得るには、半透明の背景の例で示すように、代わりに半透明の背景とアンチエイリアスのペイントを使用してください。
windowOpacityも参照してください 。
void QWidget::setMaximumSize(int maxw, int maxh)
これはオーバーロードされた関数です。
この関数は setMaximumSize(QSize(maxw,maxh)) に対応します。最大幅をmaxw に、最大高さをmaxh に設定します。
備考: プロパティmaximumSize に対するセッター関数。
void QWidget::setMinimumSize(int minw, int minh)
これはオーバーロードされた関数です。
この関数は、 setMinimumSize(QSize(minw, minh)) に対応する。最小幅をminw に、最小高さをminh に設定する。
注: プロパティ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 プロパティのセッター関数。
void QWidget::setSizePolicy(QSizePolicy::Policy horizontal, QSizePolicy::Policy vertical)
これはオーバーロードされた関数です。
ウィジェットのサイズポリシーをhorizontal とvertical に設定します。
注: プロパティsizePolicy に対するセッター関数。
QSizePolicy::QSizePolicy()も参照 。
void QWidget::setStyle(QStyle *style)
ウィジェットのGUIスタイルをstyle に設定します。 スタイルオブジェクトの所有権は移譲されません。
スタイルが設定されていない場合、ウィジェットはアプリケーションのスタイルQApplication::style() を代わりに使用します。
ウィジェットのスタイルを設定しても、既存の子ウィジェットや将来の子ウィジェットには影響しません。
警告 この関数は、Qt のスタイル設定機能を見せたい場合に特に便利です。実際のアプリケーションではこの関数を使用せず、一貫した GUI スタイルを使用してください。
警告 Qt スタイルシートは、現在のところQStyle のカスタムサブクラスには対応していません。将来のリリースで対応する予定です。
style(),QStyle,QApplication::style(),QApplication::setStyle()も参照してください 。
[static]
void QWidget::setTabOrder(QWidget *first, QWidget *second)
first ウィジェットの後にsecond ウィジェットを配置します。
これは事実上、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)
これはオーバーロードされた関数です。
連続するウィジェットのペアごとにQWidget::setTabOrder(QWidget *, QWidget *) を呼び出して、widgets リスト内のウィジェットのタブ順序を設定します。
このように各ペアを手動で設定する代わりに
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
に戻らず、それらのウィジェットの 1 つに移動します。
この関数は Qt 6.6 で導入されました。
setFocusPolicy(),setFocusProxy(),ウィジェットのキーボード・フォーカスも参照してください 。
void QWidget::setWindowFlag(Qt::WindowType flag, bool on = true)
on が true の場合、このウィジェットにウィンドウフラグflag を設定します。
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 の組み合わせである。
ウィンドウが表示されていない場合 (すなわち、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 を使用して作成されたユーザー インターフェイス記述から派生したウィジェットで使用できます。
アプリケーションでデザイナ 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 が兄弟でなければなりません。
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 がメイン・イベント・ループに戻ったときに処理するために、ペイント・イベントをスケジュールします。これにより Qt は、repaint() を呼び出すよりも高速でちらつきの少ない最適化を行うことができます。
通常、update() を数回呼び出すと、paintEvent() を1回呼び出すだけで済みます。
Qt は通常、paintEvent() 呼び出しの前にウィジェットの領域を消去します。Qt::WA_OpaquePaintEvent ウィジェット属性が設定されている場合、ウィジェットはそのすべてのピクセルを不透明色で塗る責任があります。
repaint(),paintEvent(),setUpdatesEnabled(),アナログ時計も参照してください 。
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()も参照してください 。
©2024The Qt Company Ltd. 本文書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。