Класс QWidget
Класс QWidget является базовым классом всех объектов пользовательского интерфейса. Подробнее...
| Заголовок: | #include <QWidget> |
| qmake: | QT += widgets |
| Наследует: | QObject и QPaintDevice |
| Наследуется от: | QAbstractButton, QAbstractSlider, QAbstractSpinBox, QCalendarWidget, QComboBox, QDesktopWidget, QDialog, QDialogButtonBox, QDockWidget, QFocusFrame, QFrame, QGroupBox, QKeySequenceEdit, QLineEdit, QMacCocoaViewContainer, QMacNativeWidget, QMainWindow, QMdiSubWindow, QMenu, QMenuBar, QOpenGLWidget, QProgressBar, QRubberBand, QSizeGrip, QSplashScreen, QSplitterHandle, QStatusBar, QTabBar, QTabWidget, QToolBar и QWizardPage |
Открытые типы
| перечисление | RenderFlag { DrawWindowBackground, DrawChildren, IgnoreMask } |
| флаги | RenderFlags |
Свойства
|
|
- 1 свойство унаследовано от QObject
Открытые функции
| QWidget(QWidget *parent = nullptr, Qt::WindowFlags f = ...) | |
| virtual | ~QWidget() |
| bool | acceptDrops() const |
| QString | accessibleDescription() const |
| QString | accessibleName() const |
| QList<QAction *> | actions() const |
| void | activateWindow() |
| void | addAction(QAction *action) |
| void | addActions(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 |
| 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 |
| void | getContentsMargins(int *left, int *top, int *right, int *bottom) const |
| QPixmap | grab(const QRect &rectangle = QRect(QPoint(0, 0), QSize(-1, -1))) |
| void | grabGesture(Qt::GestureType gesture, Qt::GestureFlags flags = ...) |
| 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, 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 |
| QPoint | mapFrom(const QWidget *parent, const QPoint &pos) const |
| QPoint | mapFromGlobal(const QPoint &pos) const |
| QPoint | mapFromParent(const QPoint &pos) const |
| QPoint | mapTo(const QWidget *parent, const QPoint &pos) const |
| QPoint | mapToGlobal(const QPoint &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 = ...) |
| void | render(QPainter *painter, const QPoint &targetOffset = QPoint(), const QRegion &sourceRegion = QRegion(), QWidget::RenderFlags renderFlags = ...) |
| void | repaint(int x, int y, int w, int h) |
| void | repaint(const QRect &rect) |
| void | repaint(const QRegion &rgn) |
| void | resize(const QSize &) |
| void | resize(int w, int h) |
| bool | restoreGeometry(const QByteArray &geometry) |
| QByteArray | saveGeometry() 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 | 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(int x, int y, int w, int h) |
| void | update(const QRect &rect) |
| void | update(const QRegion &rgn) |
| 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 |
- 34 публичных функций, унаследованных от QObject
- 14 публичных функций, унаследованных от QPaintDevice
Публичные слоты
| 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() |
- 1 публичный слот, унаследованный от QObject
Сигналы
| void | customContextMenuRequested(const QPoint &pos) |
| void | windowIconChanged(const QIcon &icon) |
| void | windowTitleChanged(const QString &title) |
- 2 сигнала, унаследованные от QObject
Статические публичные члены
| QWidget * | createWindowContainer(QWindow *window, QWidget *parent = nullptr, Qt::WindowFlags flags = ...) |
| QWidget * | find(WId id) |
| QWidget * | keyboardGrabber() |
| QWidget * | mouseGrabber() |
| void | setTabOrder(QWidget *first, QWidget *second) |
- 10 статических публичных членов, унаследованных от QObject
Защищённые функции
| виртуальный void | actionEvent(QActionEvent *event) |
| виртуальный void | changeEvent(QEvent *event) |
| виртуальный void | closeEvent(QCloseEvent *event) |
| виртуальный void | contextMenuEvent(QContextMenuEvent *event) |
| void | create(WId window = 0, bool initializeWindow = true, bool destroyOldWindow = true) |
| void | destroy(bool destroyWindow = true, bool destroySubWindows = true) |
| виртуальный void | dragEnterEvent(QDragEnterEvent *event) |
| виртуальный void | dragLeaveEvent(QDragLeaveEvent *event) |
| виртуальный void | dragMoveEvent(QDragMoveEvent *event) |
| виртуальный void | dropEvent(QDropEvent *event) |
| виртуальный void | enterEvent(QEvent *event) |
| виртуальный void | focusInEvent(QFocusEvent *event) |
| bool | focusNextChild() |
| виртуальный bool | focusNextPrevChild(bool next) |
| виртуальный void | focusOutEvent(QFocusEvent *event) |
| bool | focusPreviousChild() |
| виртуальный void | hideEvent(QHideEvent *event) |
| виртуальный void | inputMethodEvent(QInputMethodEvent *event) |
| виртуальный void | keyPressEvent(QKeyEvent *event) |
| виртуальный void | keyReleaseEvent(QKeyEvent *event) |
| виртуальный void | leaveEvent(QEvent *event) |
| виртуальный void | mouseDoubleClickEvent(QMouseEvent *event) |
| виртуальный void | mouseMoveEvent(QMouseEvent *event) |
| виртуальный void | mousePressEvent(QMouseEvent *event) |
| виртуальный void | mouseReleaseEvent(QMouseEvent *event) |
| виртуальный void | moveEvent(QMoveEvent *event) |
| виртуальный bool | nativeEvent(const QByteArray &eventType, void *message, long *result) |
| виртуальный void | paintEvent(QPaintEvent *event) |
| виртуальный void | resizeEvent(QResizeEvent *event) |
| виртуальный void | showEvent(QShowEvent *event) |
| виртуальный void | tabletEvent(QTabletEvent *event) |
| виртуальный void | wheelEvent(QWheelEvent *event) |
Реализованные защищенные функции
| виртуальный bool | event(QEvent *event) override |
| виртуальный void | initPainter(QPainter *painter) const override |
| виртуальный int | metric(QPaintDevice::PaintDeviceMetric m) const override |
- 9 защищенных функций унаследованных от QObject
- 1 защищенная функция унаследованная от QPaintDevice
Защищенные слоты
| void | updateMicroFocus() |
Макросы
| QWIDGETSIZE_MAX |
Дополнительные унаследованные члены
- 1 общедоступная переменная унаследованная от QObject
- 2 защищённые переменные унаследованные от QObject
- 1 защищённый тип унаследованный от QPaintDevice
Подробное описание
Класс QWidget является базовым классом для всех элементов пользовательского интерфейса.
Виджет — это атом пользовательского интерфейса: он получает события мыши, клавиатуры и другие события от системы окон и рисует своё представление на экране. Каждый виджет прямоугольный, и они упорядочены в порядке Z. Виджет обрезается родительским виджетом и виджетами, расположенными перед ним.
Виджет, который не вложен в родительский виджет, называется окном. Обычно окна имеют рамку и строку заголовка, хотя также возможно создать окна без такого оформления, используя соответствующие флаги окон.
Каждый конструктор виджета принимает один или два стандартных аргумента:
-
QWidget *parent = 0— родительский виджет. Если он равен 0 (по умолчанию), новый виджет будет окном. В противном случае он будет дочерним виджетом parent и будет ограничен геометрией parent (если вы не укажете флаг Qt::Window). -
Qt::WindowFlags f = 0(где доступно) устанавливает флаги окна; по умолчанию подходит для почти всех виджетов, но для получения, например, окна без рамки системы окон, необходимо использовать специальные флаги.
QWidget имеет много функций-членов, но некоторые из них имеют мало непосредственной функциональности; например, у QWidget есть свойство шрифта, но он сам никогда его не использует. Есть много подклассов, которые предоставляют реальную функциональность, такие как QLabel, QPushButton, QListWidget и QTabWidget.
Главные виджеты и дочерние виджеты
Виджет без родительского виджета всегда является независимым окном (главный виджет). Для этих виджетов setWindowTitle() и setWindowIcon() соответственно устанавливают заголовок и значок.
Виджеты, не являющиеся окнами, являются дочерними виджетами, отображаемыми внутри своих родительских виджетов. Большинство виджетов в Qt полезны в основном как дочерние виджеты. Например, кнопку можно отобразить как главное окно, но большинство предпочитают помещать свои кнопки внутри других виджетов, таких как QDialog.
На диаграмме показан виджет QGroupBox, используемый для размещения различных дочерних виджетов в макете, предоставляемом QGridLayout. Дочерние виджеты QLabel выделены, чтобы указать их полные размеры.
Если вы хотите использовать QWidget для размещения дочерних виджетов, обычно нужно добавить макет к родительскому QWidget. Подробнее об этом см. в разделе Управление макетами.
Композитные виджеты
Когда виджет используется в качестве контейнера для группировки ряда дочерних виджетов, он называется составным виджетом. Их можно создать, создав виджет с необходимыми визуальными свойствами — например, QFrame — и добавив к нему дочерние виджеты, обычно управляемые макетом. На приведенной выше диаграмме показан такой составной виджет, созданный с помощью Qt Designer.
END_OF_DOCUMENT_MARKERСоставные виджеты также можно создавать, наследуя стандартный виджет, такой как QWidget или QFrame, и добавляя необходимую компоновку и дочерние виджеты в конструктор подкласса. Многие из примеров, предоставляемых с Qt, используют этот подход, а также он рассматривается в учебниках Qt.
Настройка виджетов и рисование
Поскольку QWidget является подклассом QPaintDevice, подклассы могут использоваться для отображения пользовательского содержимого, которое формируется с помощью серии операций рисования с экземпляром класса QPainter. Этот подход отличается от подхода в стиле холста, используемого фреймворком Визуализации графики, где элементы добавляются в сцену приложением и отображаются самим фреймворком.
Каждый виджет выполняет все операции рисования внутри своей функции paintEvent(). Это вызывается всякий раз, когда виджет необходимо перерисовать, либо в результате каких-либо внешних изменений, либо по запросу приложения.
Пример аналоговых часов демонстрирует, как простой виджет может обрабатывать события рисования.
Подсказки размера и политики размера
При реализации нового виджета почти всегда полезно переопределить sizeHint(), чтобы обеспечить разумный размер по умолчанию для виджета, и установить правильную политику размера с помощью setSizePolicy().
По умолчанию составные виджеты, которые не предоставляют подсказки размера, будут иметь размер в соответствии с требованиями к пространству своих дочерних виджетов.
Политика размера позволяет вам предоставить хорошее поведение по умолчанию для системы управления компоновкой, чтобы другие виджеты могли легко содержать и управлять вашими. Политика размера по умолчанию указывает, что подсказка размера представляет собой предпочтительный размер виджета, и этого часто достаточно для многих виджетов.
Примечание: Размер виджетов верхнего уровня ограничен 2/3 высоты и ширины рабочего стола. Вы можете изменить размер виджета вручную, если этих границ недостаточно.
События
Виджеты реагируют на события, которые обычно вызываются действиями пользователя. Qt доставляет события виджетам, вызывая определенные обработчики событий с экземплярами подклассов QEvent, содержащими информацию о каждом событии.
Если ваш виджет содержит только дочерние виджеты, вам, вероятно, не нужно реализовывать никакие обработчики событий. Если вы хотите обнаружить щелчок мыши в дочернем виджете, вызовите функцию underMouse дочернего виджета внутри функции mousePressEvent виджета.
Пример рисования реализует более широкий набор событий для обработки перемещения мыши, нажатий кнопок и изменения размера окна.
Вам нужно будет предоставить поведение и содержимое для ваших собственных виджетов, но вот краткий обзор событий, которые относятся к QWidget, начиная с самых распространённых:
- paintEvent() вызывается всякий раз, когда виджет необходимо перерисовать. Каждый виджет, отображающий пользовательское содержимое, должен его реализовать. Рисование с помощью QPainter может происходить только в paintEvent() или в функции, вызываемой paintEvent().
- resizeEvent() вызывается, когда виджет был изменен в размерах.
- mousePressEvent() вызывается, когда нажата кнопка мыши, а курсор мыши находится внутри виджета, или когда виджет захватил мышь с помощью grabMouse(). Нажатие мыши без отпускания фактически эквивалентно вызову grabMouse().
- mouseReleaseEvent() вызывается, когда отпущена кнопка мыши. Виджет получает события отпускания мыши, когда он получил соответствующее событие нажатия мыши. Это означает, что если пользователь нажимает мышь внутри вашего виджета, затем перетаскивает мышь куда-либо ещё, прежде чем отпустить кнопку мыши, ваш виджет получает событие отпускания. Есть одно исключение: если появляется всплывающее меню, пока удерживается кнопка мыши, это всплывающее меню немедленно захватывает события мыши.
- mouseDoubleClickEvent() вызывается, когда пользователь дважды щелкает внутри виджета. Если пользователь дважды щелкает, виджет получает событие нажатия мыши, событие отпускания мыши, (событие щелчка мыши,) второе нажатие мыши, это событие и, наконец, второе событие отпускания мыши. (Также могут быть получены некоторые события перемещения мыши, если мышь не удерживается неподвижно во время этой операции.) Невозможно отличить щелчок от двойного щелчка до тех пор, пока не появится второй щелчок. (Это одна из причин, по которой большинство книг по GUI рекомендуют, чтобы двойные щелчки были расширением одиночных щелчков, а не вызывали другое действие.)
Виджеты, принимающие ввод с клавиатуры, должны переопределить несколько дополнительных обработчиков событий:
- keyPressEvent() вызывается всякий раз, когда нажимается клавиша, и снова, когда клавиша удерживается достаточно долго для автоматического повторения. Клавиши Tab и Shift+Tab передаются виджету только в том случае, если они не используются механизмами изменения фокуса. Чтобы принудительно обработать эти клавиши в вашем виджете, необходимо переопределить QWidget::event().
- focusInEvent() вызывается, когда виджет получает фокус клавиатуры (предполагается, что вы вызвали setFocusPolicy()). Хорошо работающие виджеты указывают, что они владеют фокусом клавиатуры ясным, но незаметным способом.
- focusOutEvent() вызывается, когда виджет теряет фокус клавиатуры.
Вам может потребоваться переопределить и некоторые менее распространённые обработчики событий:
- mouseMoveEvent() вызывается всякий раз, когда мышь перемещается, удерживая кнопку мыши. Это может быть полезно во время операций перетаскивания. Если вы вызываете setMouseTracking(true), вы получаете события перемещения мыши даже когда не удерживаются никакие кнопки. (См. также руководство по перетаскиванию).
- keyReleaseEvent() вызывается всякий раз, когда отпускается клавиша, и пока она удерживается (если клавиша повторяется автоматически). В этом случае виджет получит пару событий отпускания и нажатия клавиши для каждого повторения. Клавиши Tab и Shift+Tab передаются виджету только в том случае, если они не используются механизмами изменения фокуса. Чтобы принудительно обработать эти клавиши в вашем виджете, необходимо переопределить QWidget::event().
- wheelEvent() вызывается всякий раз, когда пользователь вращает колесо мыши, пока виджет имеет фокус.
- enterEvent() вызывается, когда курсор мыши входит в область экрана виджета. (Это исключает пространство экрана, принадлежащее любым дочерним виджетам виджета.)
- leaveEvent() вызывается, когда курсор мыши покидает область экрана виджета. Если курсор мыши входит в дочерний виджет, это не вызовет leaveEvent().
- moveEvent() вызывается, когда виджет был перемещен относительно родительского виджета.
- closeEvent() вызывается, когда пользователь закрывает виджет (или когда вызывается close()).
В документации для QEvent::Type также описаны некоторые довольно необычные события. Для обработки этих событий вам необходимо непосредственно переопределить event().
По умолчанию реализация event() обрабатывает Tab и Shift+Tab (для перемещения фокуса клавиатуры) и передает большинство других событий одному из более специализированных обработчиков выше.
События и механизм их доставки описаны в Системе событий.
Группы функций и свойств
Стили виджетов
В дополнение к стандартным стилям виджетов для каждой платформы, виджеты также могут быть стилизованы в соответствии с правилами, указанными в листе стилей. Эта функция позволяет настроить внешний вид определенных виджетов, чтобы предоставить пользователям визуальные подсказки о их назначении. Например, кнопку можно стилизовать определенным образом, чтобы показать, что она выполняет разрушающее действие.
Использование листов стилей виджетов описано более подробно в документе Qt Style Sheets.
Прозрачность и двойная буферизация
Начиная с Qt 4.0, QWidget автоматически использует двойную буферизацию при рисовании, поэтому нет необходимости писать код двойной буферизации в paintEvent() для предотвращения мерцания.
Начиная с Qt 4.1, атрибут виджета Qt::WA_ContentsPropagated устарел. Вместо этого содержимое родительских виджетов по умолчанию передается каждому из их дочерних элементов, если не установлен Qt::WA_PaintOnScreen. Пользовательские виджеты могут использовать эту функцию, обновляя нерегулярные области (чтобы создать непрямоугольные дочерние виджеты) или рисуя цветами с неполным альфа-компонентом. На следующей диаграмме показано, как можно тонко настроить атрибуты и свойства пользовательского виджета для достижения различных эффектов.
На приведенной выше диаграмме создан полупрозрачный прямоугольный дочерний виджет с удаленной областью и добавлен к родительскому виджету (виджет QLabel, отображающий пиксель). Затем устанавливаются различные свойства и атрибуты виджетов для достижения различных эффектов:
- В левом виджете нет дополнительных свойств или атрибутов виджетов. Это стандартное состояние подходит для большинства пользовательских виджетов, использующих прозрачность, имеющих непрямоугольную форму или не рисующих по всей своей области с непрозрачной кистью.
- В центральном виджете установлено свойство autoFillBackground. Это свойство используется с пользовательскими виджетами, которые полагаются на виджет для предоставления фонового изображения по умолчанию и не рисуют по всей своей области с непрозрачной кистью.
- В правом виджете установлен атрибут виджета Qt::WA_OpaquePaintEvent. Это означает, что виджет будет рисовать по всей своей области непрозрачными цветами. Область виджета изначально будет *неинициализированной*, что на диаграмме представлено красной диагональной сеткой, которая просвечивает через перерисованную область. Атрибут Qt::WA_OpaquePaintArea полезен для виджетов, которые нуждаются в быстром рисовании собственного специализированного содержимого и не нуждаются в заполненном фоновом изображении по умолчанию.
Для быстрого обновления пользовательских виджетов простыми цветами фона, таких как виджеты для построения графиков в режиме реального времени, лучше определить подходящий цвет фона (используя setBackgroundRole() с ролью QPalette::Window), установить свойство autoFillBackground и реализовать только необходимую функциональность рисования в методе paintEvent виджета.
Для быстрого обновления пользовательских виджетов, которые постоянно рисуют по всей своей области непрозрачным содержимым, например, виджетов для потоковой передачи видео, лучше установить атрибут виджета Qt::WA_OpaquePaintEvent, избегая ненужной издержек, связанных с перерисовкой фона виджета.
Если у виджета есть атрибут виджета Qt::WA_OpaquePaintEvent *и* установлено свойство autoFillBackground, атрибут Qt::WA_OpaquePaintEvent имеет приоритет. В зависимости от ваших требований, вы должны выбрать один из них.
Начиная с Qt 4.1, содержимое родительских виджетов также передается стандартным виджетам Qt. Это может привести к некоторым неожиданным результатам, если родительский виджет оформлен нестандартно, как показано на диаграмме ниже.
Возможности настройки поведения рисования стандартных виджетов Qt без необходимости создания подклассов немного меньше, чем у пользовательских виджетов. Обычно желаемый внешний вид стандартного виджета можно получить, установив его свойство autoFillBackground.
Создание прозрачных окон
Начиная с Qt 4.5, стало возможным создавать окна с прозрачными областями на системах окон, которые поддерживают композицию.
Чтобы включить эту функцию в виджете верхнего уровня, установите его атрибут Qt::WA_TranslucentBackground с помощью setAttribute() и убедитесь, что его фон рисуется непрозрачными цветами в областях, которые вы хотите сделать частично прозрачными.
Примечания к платформам:
- X11: Данная функция использует сервер X, поддерживающий визуализацию ARGB и менеджер компоновки окон.
- Windows: Для работы с прозрачностью виджету необходимо установить флаг окна Qt::FramelessWindowHint.
Родные виджеты против внешних виджетов
Введённые в Qt 4.4, внешние виджеты — это виджеты, неизвестные системе окон. Они не имеют связанной с ними родной дескриптора окна. Эта функция значительно ускоряет рисование, изменение размеров виджетов и устраняет мерцание.
Если вам требуется старое поведение с родными окнами, вы можете выбрать один из следующих вариантов:
- Используйте
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::RenderFlagflags QWidget::RenderFlags
Этот перечисление описывает, как отобразить виджет при вызове QWidget::render().
| Постоянная | Значение | Описание |
|---|---|---|
QWidget::DrawWindowBackground |
0x1 |
Если вы включите этот параметр, фон виджета будет нарисован в целевой области, даже если autoFillBackground не установлен. По умолчанию этот параметр включён. |
QWidget::DrawChildren |
0x2 |
Если вы включите этот параметр, дочерние виджеты будут рекурсивно отображены в целевой области. По умолчанию этот параметр включён. |
QWidget::IgnoreMask |
0x4 |
Если вы включите этот параметр, маска виджета QWidget::mask() будет проигнорирована при отрисовке в целевой области. По умолчанию этот параметр выключен. |
Это перечисление было введено или изменено в Qt 4.3.
Тип RenderFlags является псевдонимом для QFlags<RenderFlag>. Он хранит логическое ИЛИ сочетание значений RenderFlag.
END_OF_DOCUMENT_MARKERДокументация свойств
acceptDrops : bool
Это свойство указывает, включены ли события drop для данного виджета.
Установив это свойство в значение true, вы сообщаете системе, что этот виджет может принимать события drop.
Если виджет является рабочим столом (windowType() == Qt::Desktop), это может не сработать, если другой приложение использует рабочий стол; вы можете вызвать acceptDrops(), чтобы проверить, произошла ли такая ситуация.
Предупреждение: Не изменяйте это свойство в обработчике событий перетаскивания и опускания.
По умолчанию это свойство равно false.
Функции доступа:
| bool | acceptDrops() const |
| void | setAcceptDrops(bool on) |
См. также Перетаскивание и опускание.
accessibleDescription : QString
Это свойство содержит описание виджета, видимое для вспомогательных технологий.
Описание, доступное вспомогательным технологиям, должно описывать функциональность виджета. В то время как accessibleName должен быть кратким и лаконичным (например, Сохранить), описание должно давать больше контекста, например, Сохранить текущий документ.
Это свойство должно быть локализовано.
По умолчанию это свойство содержит пустую строку, и 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. Используемый цвет определяется ролью цвета QPalette::Window из палитры виджета.
Кроме того, окна всегда заполняются цветом QPalette::Window, если не установлены атрибуты WA_OpaquePaintEvent или WA_NoSystemBackground.
Это свойство не может быть отключено (т.е. установлено в false), если родительский виджет имеет статический градиент для фона.
Предупреждение: Используйте это свойство с осторожностью в сочетании со CSS-стилями Qt. Когда у виджета есть стиль с допустимым фоном или изображением рамки, это свойство автоматически отключается.
По умолчанию это свойство равно false.
Это свойство было добавлено в Qt 4.1.
Функции доступа:
| bool | autoFillBackground() const |
| void | setAutoFillBackground(bool enabled) |
См. также Qt::WA_OpaquePaintEvent, Qt::WA_NoSystemBackground и Прозрачность и двойная буферизация.
baseSize : QSize
Это свойство содержит базовый размер виджета.
Базовый размер используется для вычисления правильного размера виджета, если виджет определяет sizeIncrement().
По умолчанию для вновь созданного виджета это свойство содержит размер с нулевой шириной и высотой.
Функции доступа:
| QSize | baseSize() const |
| void | setBaseSize(const QSize &) |
| void | setBaseSize(int basew, int baseh) |
См. также setSizeIncrement().
childrenRect : const QRect
Это свойство содержит ограничительный прямоугольник дочерних виджетов.
Скрытые дочерние виджеты исключаются.
По умолчанию для виджета без дочерних элементов это свойство содержит прямоугольник с нулевой шириной и высотой, расположенный в начале координат.
Функции доступа:
| QRect | childrenRect() const |
См. также childrenRegion() и geometry().
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
Это свойство определяет форму курсора для данного виджета.
Курсор мыши примет эту форму, когда он находится над этим виджетом. Список предопределенных форм курсора см. в списке предопределённых объектов курсора.
Редактор виджет может использовать курсор I-пучка:
setCursor(Qt::IBeamCursor);
Если курсор не установлен или после вызова unsetCursor(), используется курсор родительского виджета.
По умолчанию это свойство содержит курсор со формой Qt::ArrowCursor.
Некоторые реализации оконных систем могут сбрасывать курсор при выходе мыши из виджета, даже если мышь захвачена. Если вы хотите иметь установленный курсор для всех виджетов, даже при выходе за пределы окна, используйте QApplication::setOverrideCursor().
Функции доступа:
| QCursor | cursor() const |
| void | setCursor(const QCursor &) |
| void | unsetCursor() |
См. также QApplication::setOverrideCursor().
enabled : bool
Это свойство указывает, включен ли виджет.
В общем случае, активный виджет обрабатывает события клавиатуры и мыши; неактивный виджет — нет. Исключение составляет QAbstractButton.
Некоторые виджеты отображаются по-разному, когда они отключены. Например, кнопка может отобразить свою метку в серых тонах. Если вашему виджету нужно знать, когда он становится активным или неактивным, вы можете использовать changeEvent() с типом QEvent::EnabledChange.
Отключение виджета неявно отключает всех его потомков. Соответственно, включение включает всех дочерних виджетов, если они не были явно отключены. Невозможно явно включить дочерний виджет, который не является окном, в то время как родительский виджет остаётся отключённым.
По умолчанию это свойство равно true.
Функции доступа:
| bool | isEnabled() const |
| void | setEnabled(bool) |
См. также isEnabledTo(), QKeyEvent, QMouseEvent и changeEvent().
focus : const bool
Это свойство указывает, имеет ли этот виджет (или его прокси фокуса) фокус ввода с клавиатуры
По умолчанию это свойство равно false.
Примечание: Получение значения этого свойства для виджета фактически эквивалентно проверке того, ссылается ли QApplication::focusWidget() на виджет.
Функции доступа:
| bool | hasFocus() const |
См. также setFocus(), clearFocus(), setFocusPolicy() и QApplication::focusWidget().
focusPolicy : Qt::FocusPolicy
Это свойство определяет способ, которым виджет принимает фокус клавиатуры
Политика имеет значение Qt::TabFocus, если виджет принимает фокус с помощью клавиши Tab, 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 распространяет явные свойства шрифта от родителя к ребёнку. Если вы измените конкретное свойство шрифта и назначите этот шрифт виджету, это свойство будет распространено на всех дочерних виджетах, переопределяя любые системные значения по умолчанию для этого свойства. Обратите внимание, что шрифты по умолчанию не распространяются на окна (см. isWindow()), если не включено свойство Qt::WA_WindowPropagation.
Распространение шрифтов в QWidget аналогично распространению палитры.
Текущий стиль, который используется для отрисовки содержимого всех стандартных виджетов Qt, может свободно выбрать использование шрифта виджета или, в некоторых случаях, проигнорировать его (частично или полностью). В частности, некоторые стили, такие как GTK, Mac и Windows Vista, применяют специальные изменения к шрифту виджета, чтобы соответствовать платформенной отрисовке. Из-за этого назначение свойств шрифту виджета не гарантирует изменения его внешнего вида. Вместо этого можно использовать styleSheet.
Примечание: Если Стили Qt используются на том же виджете, что и setFont(), стили Qt имеют приоритет, если настройки конфликтуют.
Функции доступа:
| const QFont & | font() const |
| void | setFont(const QFont &) |
См. также fontInfo() и fontMetrics().
frameGeometry : const QRect
геометрия виджета относительно родительского виджета, включая рамку окна
См. документацию Геометрия окон для обзора проблем геометрии с окнами.
По умолчанию это свойство содержит значение, зависящее от платформы пользователя и геометрии экрана.
Функции доступа:
| QRect | frameGeometry() const |
См. также geometry(), x(), y() и pos().
frameSize : const QSize
Это свойство содержит размер виджета, включая рамку окна
По умолчанию это свойство содержит значение, зависящее от платформы пользователя и геометрии экрана.
Функции доступа:
| QSize | frameSize() const |
fullScreen : const bool
Это свойство указывает, отображается ли виджет в полноэкранном режиме
Виджет в полноэкранном режиме занимает весь экран и не отображает элементы оформления окна, такие как строка заголовка.
По умолчанию это свойство равно false.
Функции доступа:
| bool | isFullScreen() const |
См. также windowState(), minimized и maximized.
geometry : QRect
Это свойство содержит геометрию виджета относительно родительского виджета, исключая рамку окна
При изменении геометрии виджет, если он виден, сразу получает событие перемещения (moveEvent()) и/или событие изменения размера (resizeEvent()). Если виджет в данный момент не виден, ему гарантированно будут переданы соответствующие события до его отображения.
Компонент размера корректируется, если он выходит за пределы диапазона, заданного minimumSize() и maximumSize().
Предупреждение: Вызов setGeometry() внутри resizeEvent() или moveEvent() может привести к бесконечной рекурсии.
См. документацию Геометрия окон для обзора проблем геометрии с окнами.
По умолчанию это свойство содержит значение, зависящее от платформы пользователя и геометрии экрана.
Функции доступа:
| 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().
height : const int
Это свойство содержит высоту виджета, исключая рамку окна
См. документацию Геометрия окна для обзора проблем с геометрией окон.
Примечание: Не используйте эту функцию для поиска высоты экрана на рабочем столе с несколькими экранами. Прочитайте это примечание для получения подробностей.
По умолчанию данное свойство содержит значение, зависящее от платформы пользователя и геометрии экрана.
Функции доступа:
| int | height() const |
См. также geometry, width и size.
inputMethodHints : Qt::InputMethodHints
Какие специфические подсказки для методов ввода имеет виджет.
Это актуально только для виджетов ввода. Оно используется методом ввода для получения подсказок о том, как методу ввода следует работать. Например, если установлен флаг Qt::ImhFormattedNumbersOnly, метод ввода может изменить свои визуальные компоненты, чтобы отразить, что можно вводить только цифры.
Предупреждение: Некоторые виджеты требуют определённых флагов для корректной работы. Чтобы установить флаг, используйте w->setInputMethodHints(w->inputMethodHints()|f) вместо w->setInputMethodHints(f).
Примечание: Флаги являются только подсказками, поэтому конкретная реализация метода ввода свободна игнорировать их. Если вы хотите быть уверены, что вводятся определённые типы символов, вы также должны установить QValidator на виджете.
Значение по умолчанию — Qt::ImhNone.
Это свойство было введено в Qt 4.6.
Функции доступа:
| Qt::InputMethodHints | inputMethodHints() const |
| void | setInputMethodHints(Qt::InputMethodHints hints) |
См. также inputMethodQuery().
isActiveWindow : const bool
Это свойство указывает, является ли окно данного виджета активным окном.
Активное окно — это окно, содержащее виджет, который имеет фокус клавиатуры (окно может по-прежнему иметь фокус, если в нём нет виджетов или ни один из его виджетов не принимает фокус клавиатуры).
Когда всплывающие окна видны, это свойство true как для активного окна, так и для всплывающего.
По умолчанию данное свойство false.
Функции доступа:
| bool | isActiveWindow() const |
См. также activateWindow() и QApplication::activeWindow().
layoutDirection : Qt::LayoutDirection
Это свойство содержит направление макета для этого виджета.
По умолчанию это свойство установлено в Qt::LeftToRight.
Когда направление макета установлено для виджета, оно распространяется на дочерние виджеты, но не на дочерний виджет, являющийся окном, и не на дочерний виджет, для которого явно вызван setLayoutDirection(). Также дочерние виджеты, добавленные после вызова setLayoutDirection() для родительского виджета, не наследуют направление макета родителя.
Этот метод больше не влияет на направление макета текста с Qt 4.7.
Функции доступа:
| Qt::LayoutDirection | layoutDirection() const |
| void | setLayoutDirection(Qt::LayoutDirection direction) |
| void | unsetLayoutDirection() |
См. также QApplication::layoutDirection.
locale : QLocale
Это свойство содержит локаль виджета.
Пока не установлена специальная локаль, это либо локаль родительского виджета, либо (если этот виджет является виджетом верхнего уровня) локаль по умолчанию.
Если виджет отображает даты или числа, они должны быть отформатированы с использованием локали виджета.
Это свойство было введено в Qt 4.3.
Функции доступа:
| QLocale | locale() const |
| void | setLocale(const QLocale &locale) |
| void | unsetLocale() |
См. также QLocale и QLocale::setDefault().
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
Это свойство содержит максимальный размер виджета в пикселях.
Размер виджета не может быть увеличен больше максимального размера виджета.
По умолчанию это свойство содержит размер, в котором ширина и высота имеют значения 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.
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.
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.
modal : const bool
Это свойство определяет, является ли виджет модальным.
Это свойство имеет смысл только для окон. Модальный виджет препятствует получению ввода виджетами во всех других окнах.
По умолчанию это свойство равно false.
Функции доступа:
| bool | isModal() const |
См. также isWindow(), windowModality и QDialog.
mouseTracking : bool
Это свойство определяет, включено ли отслеживание мыши для виджета.
Если отслеживание мыши отключено (по умолчанию), виджет получает события перемещения мыши только тогда, когда хотя бы одна кнопка мыши нажата во время перемещения.
Если отслеживание мыши включено, виджет получает события перемещения мыши даже если никакие кнопки не нажаты.
Функции доступа:
| bool | hasMouseTracking() const |
| void | setMouseTracking(bool enable) |
См. также mouseMoveEvent().
normalGeometry : const QRect
Это свойство содержит геометрию виджета, как она будет отображаться при отображении в качестве обычного (не максимализированного и не полноэкранного) виджета верхнего уровня.
Для дочерних виджетов это свойство всегда содержит пустой прямоугольник.
По умолчанию это свойство содержит пустой прямоугольник.
Функции доступа:
| QRect | normalGeometry() const |
См. также QWidget::windowState() и QWidget::geometry.
palette : QPalette
Это свойство содержит палитру виджета.
Это свойство описывает палитру виджета. Палитра используется стилем виджета при отрисовке стандартных компонентов и позволяет настраивать виджетов таким образом, чтобы они соответствовали внешнему виду платформы. На разных платформах или с разными стилями могут быть разные палитры.
При назначении новой палитры виджету цветовые роли из этой палитры объединяются с системной палитрой виджета, чтобы сформировать конечную палитру виджета. Элемент палитры для роли фона виджета используется для заполнения фона виджета (см. QWidget::autoFillBackground), а роль переднего плана инициализирует кисть QPainter.
Значение по умолчанию зависит от системной среды. QApplication поддерживает системную/темовую палитру, которая служит значением по умолчанию для всех виджетов. Также могут быть специальные палитры по умолчанию для определенных типов виджетов (например, в Windows Vista все классы, производные от QMenuBar, имеют специальную палитру по умолчанию). Вы также можете определить палитры по умолчанию для виджетов, передав пользовательскую палитру и имя виджета в QApplication::setPalette(). Наконец, стиль всегда имеет возможность отшлифовать палитру при её назначении (см. QStyle::polish()).
QWidget распространяет явные роли палитры от родителя к дочернему виджету. Если вы назначите кисть или цвет определённой роли в палитре и назначите эту палитру виджету, эта роль будет распространяться на все дочерние виджеты, переопределяя любые системные значения по умолчанию для этой роли. Обратите внимание, что палитры по умолчанию не распространяются на окна (см. isWindow()), если не включен атрибут Qt::WA_WindowPropagation.
Распространение палитры в QWidget аналогично распространению шрифтов.
Текущий стиль, используемый для отрисовки содержимого всех стандартных виджетов Qt, свободен выбирать цвета и кисти из палитры виджета или в некоторых случаях игнорировать палитру (частично или полностью). В частности, некоторые стили, такие как GTK-стиль, Mac-стиль и Windows Vista-стиль, зависят от сторонних API для отрисовки содержимого виджетов, и эти стили обычно не следуют палитре. По этой причине назначение ролей в палитру виджета не гарантирует изменения внешнего вида виджета. Вместо этого вы можете применить styleSheet. Более подробную информацию можно найти в статье базы знаний здесь.
Предупреждение: Не используйте эту функцию совместно с Qt Style Sheets. При использовании стилей Qt палитру виджета можно настроить с помощью «color», «background-color», «selection-color», «selection-background-color» и «alternate-background-color».
Функции доступа:
| const QPalette & | palette() const |
| void | setPalette(const QPalette &) |
См. также QApplication::palette() и QWidget::font().
pos : QPoint
Это свойство содержит положение виджета внутри его родительского виджета.
Если виджет является окном, положение — это положение виджета на рабочем столе, включая его рамку.
При изменении положения виджет, если он отображается, немедленно получает событие перемещения (moveEvent). Если виджет в настоящее время не отображается, гарантируется, что он получит событие до отображения.
По умолчанию это свойство содержит положение, которое относится к началу координат.
Предупреждение: Вызов move() или setGeometry() внутри moveEvent() может привести к бесконечной рекурсии.
См. документацию Геометрия окна для общего обзора проблем с геометрией окон.
Функции доступа:
| QPoint | pos() const |
| void | move(int x, int y) |
| void | move(const QPoint &) |
См. также frameGeometry, size, x() и y().
rect : const QRect
Это свойство содержит внутреннюю геометрию виджета, исключая рамку окна.
Свойство rect равно QRect(0, 0, width(), height()).
См. документацию Геометрия окна для обзора проблем с геометрией окон.
По умолчанию это свойство содержит значение, зависящее от платформы пользователя и геометрии экрана.
Функции доступа:
| QRect | rect() const |
См. также size.
size : QSize
Это свойство содержит размер виджета, исключая рамку окна.
Если виджет видим при изменении размера, он сразу получает событие изменения размера (resizeEvent()). Если виджет не виден в текущий момент, гарантируется, что он получит событие до своего отображения.
Размер корректируется, если он выходит за пределы, определённые minimumSize() и maximumSize().
По умолчанию это свойство содержит значение, зависящее от платформы пользователя и геометрии экрана.
Предупреждение: Вызов resize() или setGeometry() внутри resizeEvent() может привести к бесконечной рекурсии.
Примечание: Установка размера в QSize(0, 0) приведет к тому, что виджет не будет отображаться на экране. Это также относится к окнам.
Функции доступа:
| QSize | size() const |
| void | resize(int w, int h) |
| void | resize(const QSize &) |
См. также pos, geometry, minimumSize, maximumSize, resizeEvent() и adjustSize().
sizeHint : const QSize
Это свойство содержит рекомендуемый размер для виджета.
Если значение этого свойства является недопустимым размером, рекомендация размера отсутствует.
Реализация sizeHint() по умолчанию возвращает недопустимый размер, если для этого виджета нет макета, и возвращает предпочтительный размер макета в противном случае.
Функции доступа:
| virtual QSize | sizeHint() const |
См. также QSize::isValid(), minimumSizeHint(), sizePolicy(), setMinimumSize() и updateGeometry().
sizeIncrement : QSize
Это свойство содержит приращение размера виджета.
При изменении размера пользователем размер будет изменяться шагами sizeIncrement(). width() пикселей по горизонтали и sizeIncrement.height() пикселей по вертикали, со baseSize() в качестве основы. Предпочтительные размеры виджетов — это неотрицательные целые числа i и j:
width = baseSize().width() + i * sizeIncrement().width(); height = baseSize().height() + j * sizeIncrement().height();
Обратите внимание, что, хотя вы можете установить приращение размера для всех виджетов, это влияет только на окна.
По умолчанию это свойство содержит размер с нулевой шириной и высотой.
Предупреждение: Приращение размера не имеет эффекта под Windows и может быть проигнорировано менеджером окон на X11.
Функции доступа:
| QSize | sizeIncrement() const |
| void | setSizeIncrement(const QSize &) |
| void | setSizeIncrement(int w, int h) |
См. также size, minimumSize и maximumSize.
sizePolicy : QSizePolicy
Это свойство содержит поведение макета по умолчанию виджета.
Если есть QLayout, который управляет дочерними виджетами, используется политика размера, указанная этим макетом. Если такого QLayout нет, используется результат этой функции.
Политика по умолчанию — Preferred/Preferred, что означает, что виджет может быть свободно изменён по размеру, но предпочтительнее размер, возвращаемый sizeHint(). Виджеты типа кнопок устанавливают политику размера, чтобы указать, что они могут растягиваться по горизонтали, но фиксированы по вертикали. То же самое относится к полям ввода (например, QLineEdit, QSpinBox или редактируемый QComboBox) и другим виджетам с горизонтальной ориентацией (например, QProgressBar). QToolButton обычно квадратные, поэтому они позволяют расти в обоих направлениях. Виджеты, поддерживающие разные направления (например, QSlider, QScrollBar или QHeader), указывают растяжение только в соответствующем направлении. Виджеты, которые могут предоставлять полосы прокрутки (обычно подклассы QScrollArea), имеют тенденцию указывать, что они могут использовать дополнительное пространство и могут обойтись меньшим размером, чем sizeHint().
Функции доступа:
| QSizePolicy | sizePolicy() const |
| void | setSizePolicy(QSizePolicy) |
| void | setSizePolicy(QSizePolicy::Policy horizontal, QSizePolicy::Policy vertical) |
См. также sizeHint(), QLayout, QSizePolicy и updateGeometry().
statusTip : QString
Это свойство содержит всплывающую подсказку виджета.
По умолчанию это свойство содержит пустую строку.
Функции доступа:
| QString | statusTip() const |
| void | setStatusTip(const QString &) |
См. также toolTip и whatsThis.
styleSheet : QString
Это свойство содержит таблицу стилей виджета.
Таблица стилей содержит текстовое описание настроек стиля виджета, как описано в документе Qt Style Sheets.
Начиная с Qt 4.5, таблицы стилей Qt полностью поддерживают macOS.
Предупреждение: Таблицы стилей Qt в настоящее время не поддерживаются для пользовательских подклассов QStyle. Мы планируем решить эту проблему в будущей версии.
Это свойство было добавлено в Qt 4.2.
Функции доступа:
| QString | styleSheet() const |
| void | setStyleSheet(const QString &styleSheet) |
См. также setStyle(), QApplication::styleSheet и Qt Style Sheets.
tabletTracking : bool
Это свойство указывает, включено ли отслеживание планшета для виджета.
Если отслеживание планшета отключено (по умолчанию), виджет получает события перемещения планшета только тогда, когда стилус находится в контакте с планшетом или нажата хотя бы одна кнопка стилуса, при перемещении стилуса.
Если отслеживание планшета включено, виджет получает события перемещения планшета даже при наведении вблизи. Это полезно для отслеживания положения, а также дополнительных свойств, таких как вращение и наклон, и предоставления обратной связи в пользовательском интерфейсе.
Это свойство было добавлено в Qt 5.9.
Функции доступа:
| 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 (по умолчанию), длительность рассчитывается в зависимости от длины всплывающей подсказки.
Это свойство было добавлено в Qt 5.2.
Функции доступа:
| int | toolTipDuration() const |
| void | setToolTipDuration(int msec) |
См. также toolTip.
updatesEnabled : bool
Это свойство указывает, включены ли обновления.
Виджет с включёнными обновлениями получает события рисования и имеет системный фон; у выключенного виджета нет. Это также означает, что вызов update() и repaint() не имеет эффекта, если обновления отключены.
По умолчанию это свойство равно true.
setUpdatesEnabled() обычно используется для отключения обновлений на короткое время, например, для предотвращения мерцания экрана во время больших изменений. В Qt виджеты обычно не вызывают мерцание экрана, но на X11 сервер может стереть области на экране, когда виджеты скрываются до того, как они могут быть заменены другими виджетами. Отключение обновлений решает эту проблему.
Пример:
setUpdatesEnabled(false); bigVisualChanges(); setUpdatesEnabled(true);
Отключение виджета неявно отключает всех его дочерних элементов. Включение виджета включает всех дочерних виджетов, за исключением виджетов верхнего уровня или тех, которые были явно отключены. Повторное включение обновлений неявно вызывает update() для виджета.
Функции доступа:
| bool | updatesEnabled() const |
| void | setUpdatesEnabled(bool enable) |
См. также paintEvent().
visible : bool
Это свойство указывает, виден ли виджет.
Вызов setVisible(true) или show() устанавливает виджет в видимое состояние, если все его родительские виджеты до окна видимы. Если родительский элемент не виден, виджет не станет видимым, пока все его предки не будут показаны. Если его размер или положение изменились, Qt гарантирует, что виджет получит события перемещения и изменения размера непосредственно перед его отображением. Если виджет еще не был изменен в размере, Qt настроит размер виджета на полезное значение по умолчанию, используя adjustSize().
Вызов setVisible(false) или hide() скрывает виджет явно. Явно скрытый виджет никогда не станет видимым, даже если все его предки станут видимыми, пока вы не покажете его.
Виджет получает события show и hide, когда его состояние видимости изменяется. Между событиями hide и show нет необходимости тратить циклы ЦП на подготовку или отображение информации пользователю. Приложение для работы с видео, например, может просто прекратить генерацию новых кадров.
Виджет, который случайно скрыт другими окнами на экране, считается видимым. То же самое относится к иконным окнам и окнам, существующим на другом виртуальном рабочем столе (на платформах, поддерживающих эту концепцию). Виджет получает спонтанные события show и hide, когда его состояние отображения изменяется системой окон, например, спонтанное событие hide, когда пользователь сворачивает окно, и спонтанное событие show, когда окно восстанавливается.
Вам почти никогда не нужно переопределять функцию setVisible(). Если вам нужно изменить некоторые параметры перед отображением виджета, используйте showEvent() вместо этого. Если вам нужно выполнить некоторую отложенную инициализацию, используйте событие Polish, доставленное в функцию event().
Функции доступа:
| bool | isVisible() const |
| virtual void | setVisible(bool visible) |
См. также show(), hide(), isHidden(), isVisibleTo(), isMinimized(), showEvent() и hideEvent().
whatsThis : QString
Это свойство содержит текст справки "Что это?".
По умолчанию это свойство содержит пустую строку.
Функции доступа:
| QString | whatsThis() const |
| void | setWhatsThis(const QString &) |
См. также QWhatsThis, QWidget::toolTip и QWidget::statusTip.
width : const int
Это свойство содержит ширину виджета, за исключением рамки окна.
См. документацию Геометрия окна для обзора проблем с геометрией окон.
Примечание: Не используйте эту функцию для поиска ширины экрана на рабочем столе с несколькими экранами. Читайте это примечание для получения подробностей.
По умолчанию это свойство содержит значение, зависящее от платформы пользователя и геометрии экрана.
Функции доступа:
| int | width() const |
См. также geometry, height и size.
windowFilePath : QString
Это свойство содержит путь к файлу, связанному с виджетом.
Это свойство имеет смысл только для окон. Оно связывает путь к файлу с окном. Если вы установили путь к файлу, но не установили заголовок окна, Qt устанавливает заголовок окна в имя файла указанного пути, полученное с помощью QFileInfo::fileName().
Если заголовок окна установлен в какой-либо момент, то заголовок окна имеет приоритет и отображается вместо строки пути к файлу.
Кроме того, на macOS это предоставляет дополнительную выгоду, устанавливая иконку прокси для окна, предполагая, что путь к файлу существует.
Если путь к файлу не задан, это свойство содержит пустую строку.
По умолчанию это свойство содержит пустую строку.
Это свойство было добавлено в Qt 4.4.
Функции доступа:
| QString | windowFilePath() const |
| void | setWindowFilePath(const QString &filePath) |
См. также windowTitle и windowIcon.
windowFlags : Qt::WindowFlags
Флаги окна представляют собой комбинацию типа (например, Qt::Dialog) и нуля или более подсказок для системы окон (например, Qt::FramelessWindowHint).
Если у виджета был тип Qt::Widget или Qt::SubWindow и он становится окном (Qt::Window, Qt::Dialog и т.д.), он размещается в позиции (0, 0) на рабочем столе. Если виджет является окном и становится Qt::Widget или Qt::SubWindow, он размещается в позиции (0, 0) относительно родительского виджета.
Примечание: Эта функция вызывает setParent(), когда изменяются флаги окна, что приводит к скрытию виджета. Вам необходимо вызвать show(), чтобы снова сделать виджет видимым.
Функции доступа:
| Qt::WindowFlags | windowFlags() const |
| void | setWindowFlags(Qt::WindowFlags type) |
См. также windowType(), setWindowFlag() и Пример флагов окна.
windowIcon : QIcon
Это свойство содержит значок виджета.
Это свойство имеет смысл только для окон. Если значок не был задан, windowIcon() возвращает значок приложения (QApplication::windowIcon()).
Функции доступа:
| QIcon | windowIcon() const |
| void | setWindowIcon(const QIcon &icon) |
Сигнал уведомления:
| void | windowIconChanged(const QIcon &icon) |
См. также windowTitle.
windowModality : Qt::WindowModality
Это свойство определяет, какие окна блокируются модальным виджетом.
Это свойство имеет смысл только для окон. Модальный виджет предотвращает получение ввода виджетами в других окнах. Значение этого свойства определяет, какие окна блокируются, когда виджет отображается. Изменение этого свойства при отображении окна не оказывает никакого влияния; сначала необходимо скрыть виджет, а затем отобразить его снова.
По умолчанию это свойство равно Qt::NonModal.
Это свойство было добавлено в Qt 4.1.
Функции доступа:
| Qt::WindowModality | windowModality() const |
| void | setWindowModality(Qt::WindowModality windowModality) |
См. также isWindow(), QWidget::modal и QDialog.
windowModified : bool
Это свойство указывает, имеются ли в документе, отображаемом в окне, несохранённые изменения.
Изменённое окно — это окно, содержимое которого было изменено, но не было сохранено на диск. Этот флаг будет иметь разные эффекты на разных платформах. На macOS кнопка закрытия будет иметь изменённый вид; на других платформах в заголовке окна будет отображаться «*» (звездочка).
Заголовок окна должен содержать заполнитель «[*]», указывающий, где должна отображаться «*». Обычно он должен отображаться сразу после имени файла (например, «document1.txt[*] — Текстовый редактор»). Если окно не изменено, заполнитель просто удаляется.
Обратите внимание, что если виджет установлен как изменённый, все его предки также будут установлены как изменённые. Однако, если вы вызываете setWindowModified(false) на виджете, это не будет распространяться на его родителя, поскольку другие дочерние элементы родителя могут быть изменены.
Функции доступа:
| bool | isWindowModified() const |
| void | setWindowModified(bool) |
См. также windowTitle, Пример приложения, Пример SDI и Пример MDI.
windowOpacity : double
Это свойство определяет уровень непрозрачности окна.
Допустимый диапазон непрозрачности — от 1,0 (полностью непрозрачно) до 0,0 (полностью прозрачно).
По умолчанию значение этого свойства равно 1,0.
Эта функция доступна на платформах Embedded Linux, macOS, Windows и X11, поддерживающих расширение Composite.
Примечание: На X11 вам необходимо запустить менеджер композиции, и атом _NET_WM_WINDOW_OPACITY, специфичный для X11, должен поддерживаться используемым вами менеджером окон.
Предупреждение: Изменение этого свойства с непрозрачного на прозрачное может вызвать событие рисования, которое необходимо обработать, прежде чем окно будет отображено корректно. Это в первую очередь влияет на использование QPixmap::grabWindow(). Также обратите внимание, что полупрозрачные окна обновляются и изменяют размер значительно медленнее, чем непрозрачные окна.
Функции доступа:
| qreal | windowOpacity() const |
| void | setWindowOpacity(qreal level) |
См. также setMask().
windowTitle : QString
Это свойство содержит заголовок окна (заголовок).
Это свойство имеет смысл только для виджетов верхнего уровня, таких как окна и диалоговые окна. Если заголовок не был задан, заголовок основан на windowFilePath. Если ни один из них не задан, то заголовок — пустая строка.
Если вы используете механизм windowModified, заголовок окна должен содержать заполнитель «[*]», указывающий, где должна отображаться «*». Обычно он должен отображаться сразу после имени файла (например, «document1.txt[*] — Текстовый редактор»). Если свойство windowModified равно false (значение по умолчанию), заполнитель просто удаляется.
На некоторых платформах настольных ПК (включая Windows и Unix) имя приложения (из QGuiApplication::applicationDisplayName) добавляется в конец заголовка окна, если он задан. Это делается плагином QPA, поэтому он отображается пользователю, но не является частью строки windowTitle.
Функции доступа:
| QString | windowTitle() const |
| void | setWindowTitle(const QString &) |
Сигнал уведомления:
| void | windowTitleChanged(const QString &title) |
См. также windowIcon, windowModified и windowFilePath.
x : const int
Это свойство содержит координату x виджета относительно его родителя, включая рамку окна.
См. документацию по геометрии окон для обзора вопросов геометрии окон.
По умолчанию это свойство имеет значение 0.
Функции доступа:
| int | x() const |
См. также frameGeometry, y и pos.
y : const int
Это свойство содержит координату y виджета относительно его родителя, включая рамку окна.
См. документацию по геометрии окон для обзора вопросов геометрии окон.
По умолчанию это свойство имеет значение 0.
Функции доступа:
| int | y() const |
См. также frameGeometry, x и pos.
Документация по функциям-членам
QWidget::QWidget(QWidget *parent = nullptr, Qt::WindowFlags f = ...)
Создаёт виджет, являющийся дочерним элементом parent, с флагами виджета, установленными в f.
Если parent равен 0, новый виджет становится окном. Если parent — это другой виджет, этот виджет становится дочерним окном внутри parent. Новый виджет удаляется при удалении его parent.
Аргумент флагов виджета, f, обычно равен 0, но его можно установить для настройки рамки окна (т.е. parent должен быть равен 0). Для настройки рамки используйте значение, составленное из побитового ИЛИ любых из флагов окон.
Если вы добавляете дочерний виджет к уже отображаемому виджету, необходимо явно отобразить дочерний элемент, чтобы он стал видимым.
Обратите внимание, что версия Qt для X11 может не поддерживать все комбинации флагов стиля на всех системах. Это связано с тем, что в X11 Qt может только запросить у менеджера окон, и менеджер окон может переопределить настройки приложения. В Windows Qt может установить любые желаемые вами флаги.
См. также windowFlags.
[virtual] QWidget::~QWidget()
Удаляет виджет.
Сначала удаляются все дочерние элементы этого виджета. Приложение завершается, если этот виджет является главным виджетом.
[virtual protected] void QWidget::actionEvent(QActionEvent *event)
Этот обработчик событий вызывается с данным event всякий раз, когда действия виджета изменяются.
См. также addAction(), insertAction(), removeAction(), actions() и QActionEvent.
QList<QAction *> QWidget::actions() const
Возвращает (возможно, пустой) список действий этого виджета.
См. также contextMenuPolicy, insertAction() и removeAction().
void QWidget::activateWindow()
Устанавливает верхний виджет, содержащий этот виджет, в качестве активного окна.
Активное окно — это видимое верхнее окно, имеющее фокус ввода с клавиатуры.
Эта функция выполняет ту же операцию, что и щелчок мышью по строке заголовка верхнего окна. В X11 результат зависит от менеджера окон. Если вы хотите убедиться, что окно также находится сверху, вы также должны вызвать raise(). Обратите внимание, что окно должно быть видимым, иначе activateWindow() не имеет эффекта.
В Windows, если вы вызываете это, когда приложение в настоящее время не является активным, то это не сделает его активным окном. Это изменит цвет записи в панели задач, чтобы указать, что окно каким-то образом изменилось. Это происходит потому, что Microsoft не позволяет приложению прерывать то, что пользователь в данный момент делает в другом приложении.
См. также isActiveWindow(), window(), show() и QWindowsWindowFunctions::setWindowActivationBehavior().
void QWidget::addAction(QAction *action)
Добавляет действие action в список действий этого виджета.
Все виджеты QWidgets имеют список QActions, однако они могут быть представлены графически многими различными способами. По умолчанию список QAction (возвращаемый функцией actions()) используется для создания контекстного меню QMenu.
QWidget должен иметь только один экземпляр каждого действия, и добавление уже имеющегося действия не приведет к тому, что одно и то же действие будет в виджете дважды.
Владение action не передаётся этому QWidget.
См. также removeAction(), insertAction(), actions() и QMenu.
void QWidget::addActions(QList<QAction *> actions)
Добавляет действия actions в список действий этого виджета.
См. также removeAction(), QMenu и addAction().
void QWidget::adjustSize()
Настраивает размер виджета в соответствии с его содержимым.
Эта функция использует sizeHint(), если она допустима, то есть ширина и высота подсказки размера не меньше 0. В противном случае размер устанавливается на прямоугольник дочерних элементов, охватывающий все дочерние виджеты (объединение всех прямоугольников дочерних виджетов).
Для окон также учитывается размер экрана. Если sizeHint() меньше (200, 100) и политика размера — расширяющаяся, окно будет по крайней мере (200, 100). Максимальный размер окна составляет 2/3 ширины и высоты экрана.
См. также sizeHint() и childrenRect().
QPalette::ColorRole QWidget::backgroundRole() const
Возвращает роль фона виджета.
Роль фона определяет кисть из палитры виджета, используемая для отрисовки фона.
Если роль фона явно не задана, виджет наследует роль фона своего родительского виджета.
См. также setBackgroundRole() и foregroundRole().
QBackingStore *QWidget::backingStore() const
Возвращает QBackingStore, в который будет отрисовываться этот виджет.
Эта функция была добавлена в Qt 5.0.
[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) в системе координат виджета. Если видимого дочернего виджета в указанной позиции нет, функция возвращает 0.
QWidget *QWidget::childAt(const QPoint &p) const
Это перегруженная функция.
Возвращает видимый дочерний виджет в точке p в собственной системе координат виджета.
void QWidget::clearFocus()
Отнимает фокус ввода с клавиатуры у виджета.
Если у виджета активен фокус, ему отправляется событие focus out, чтобы сообщить о потере фокуса.
Этот виджет должен разрешить установку фокуса, чтобы получить фокус ввода с клавиатуры, то есть он должен вызвать setFocusPolicy().
См. также hasFocus(), setFocus(), focusInEvent(), focusOutEvent(), setFocusPolicy() и QApplication::focusWidget().
void QWidget::clearMask()
Удаляет любые маски, установленные с помощью setMask().
См. также setMask().
[slot] bool QWidget::close()
Закрывает этот виджет. Возвращает true если виджет был закрыт; в противном случае возвращает false.
Сначала виджету отправляется QCloseEvent. Виджет скрывается, если он принимает событие закрытия. Если он отклоняет событие, ничего не происходит. По умолчанию реализация QWidget::closeEvent() принимает событие закрытия.
Если у виджета установлен флаг Qt::WA_DeleteOnClose, виджет также удаляется. События закрытия доставляются виджету независимо от того, виден он или нет.
Сигнал QApplication::lastWindowClosed() генерируется при закрытии последнего видимого основного окна (то есть окна без родителя) со свойством Qt::WA_QuitOnClose, установленным. По умолчанию это свойство установлено для всех виджетов, кроме временных окон, таких как всплывающие окна, окна инструментов и всплывающие меню.
[virtual protected] void QWidget::closeEvent(QCloseEvent *event)
Этот обработчик событий вызывается с заданным event, когда Qt получает запрос на закрытие окна для верхнего виджета от системного окна.
По умолчанию событие принимается, и виджет закрывается. Вы можете переопределить эту функцию, чтобы изменить способ реагирования виджета на запросы закрытия окна. Например, вы можете предотвратить закрытие окна, вызвав ignore() для всех событий.
Приложения с главным окном обычно используют переопределения этой функции для проверки того, были ли сохранены данные пользователя, и запрашивают разрешение перед закрытием. Например, пример приложения Application Example использует вспомогательную функцию для определения того, следует ли закрывать окно:
void MainWindow::closeEvent(QCloseEvent *event)
{
if (maybeSave()) {
writeSettings();
event->accept();
} else {
event->ignore();
}
} См. также event(), hide(), close(), QCloseEvent и Application Example.
QMargins QWidget::contentsMargins() const
Функция contentsMargins возвращает отступы содержимого виджета.
Эта функция была добавлена в Qt 4.6.
См. также getContentsMargins(), setContentsMargins() и contentsRect().
QRect QWidget::contentsRect() const
Возвращает область внутри отступов виджета.
См. также setContentsMargins() и getContentsMargins().
[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 игнорируется в Qt 5. Используйте QWindow::fromWinId() для создания QWindow, оборачивающего внешнее окно, и передайте его в QWidget::createWindowContainer() вместо этого.
Инициализирует окно (устанавливает геометрию и т. д.), если initializeWindow имеет значение true. Если initializeWindow имеет значение false, инициализация не выполняется. Этот параметр имеет смысл только если window является допустимым окном.
Удаляет старое окно, если destroyOldWindow имеет значение true. Если destroyOldWindow имеет значение false, вы сами несете ответственность за удаление окна (используя платформенно-специфичный код).
Конструктор QWidget вызывает create(0,true,true) для создания окна для этого виджета.
См. также createWindowContainer() и QWindow::fromWinId().
[static] QWidget *QWidget::createWindowContainer(QWindow *window, QWidget *parent = nullptr, Qt::WindowFlags flags = ...)
Создает QWidget, который позволяет встраивать window в приложение на основе QWidget.
Контейнер окна создается как дочерний элемент parent и с флагами окна flags.
После того как окно будет встроено в контейнер, контейнер будет управлять геометрией и видимостью окна. Явное обращение к QWindow::setGeometry(), QWindow::show() или QWindow::hide() для встраиваемого окна не рекомендуется.
Контейнер принимает на себя владение window. Окно может быть удалено из контейнера окна с помощью вызова QWindow::setParent().
Контейнер окна прикрепляется как дочернее окно к верхнему окну, частью которого он является. Когда контейнер окна используется как дочерний элемент QAbstractScrollArea или QMdiArea, он будет создавать нативное окно для каждого виджета в цепочке родителей, чтобы обеспечить правильную укладку и обрезку в этом случае. Создание нативного окна для контейнера окна также позволяет обеспечить правильную укладку и обрезку. Это должно быть выполнено до отображения контейнера окна. Приложения с многими нативными дочерними окнами могут испытывать проблемы с производительностью.
Контейнер окна имеет ряд известных ограничений:
- Порядок стека; Встраиваемое окно будет расположено поверх иерархии виджетов как непрозрачный прямоугольник. Порядок стека нескольких перекрывающихся экземпляров контейнера окна не определён.
- Интеграция рендеринга; Контейнер окна не взаимодействует с QGraphicsProxyWidget, QWidget::render() или аналогичными функциями.
- Обработка фокуса; Контейнер окна может иметь любую политику фокуса, и он делегирует фокус окну с помощью вызова QWindow::requestActivate(). Однако возврат к обычной цепочке фокуса из экземпляра QWindow будет зависеть от реализации экземпляра QWindow само по себе. Например, при переходе в окно на основе Qt Quick с фокусом по табу, дальнейшие нажатия клавиши Tab, скорее всего, будут циклическими только внутри приложения QML. Также, действительно ли QWindow::requestActivate() даёт фокус окну, зависит от платформы.
- Использование многих экземпляров контейнера окна в приложении на основе QWidget может значительно ухудшить общую производительность приложения.
[signal] void QWidget::customContextMenuRequested(const QPoint &pos)
Этот сигнал излучается, когда политика контекстного меню виджета contextMenuPolicy имеет значение Qt::CustomContextMenu, и пользователь запросил контекстное меню в виджете. Позиция pos — это позиция события контекстного меню, которое получает виджет. Как правило, это координаты виджета. Исключение из этого правила — QAbstractScrollArea и его подклассы, которые отображают событие контекстного меню в координатах viewport().
См. также mapToGlobal(), QMenu и contextMenuPolicy.
[protected] void QWidget::destroy(bool destroyWindow = true, bool destroySubWindows = true)
Освобождает ресурсы системы окон. Уничтожает окно виджета, если destroyWindow имеет значение true.
destroy() рекурсивно вызывает себя для всех дочерних виджетов, передавая destroySubWindows в качестве параметра destroyWindow. Чтобы получить больший контроль над уничтожением дочерних виджетов, сначала уничтожайте их выборочно.
Эта функция обычно вызывается из деструктора QWidget.
[virtual protected] void QWidget::dragEnterEvent(QDragEnterEvent *event)
Этот обработчик событий вызывается при выполнении перетаскивания и вхождении курсора в этот виджет. Событие передаётся в параметре event.
Если событие проигнорировано, виджет не получит никаких событий перемещения при перетаскивании.
Подробную информацию о реализации перетаскивания в вашем приложении см. в документации по перетаскиванию.
См. также 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
Возвращает эффективное идентификатор окна системы для виджета, т. е. идентификатор окна нативной родительской системы.
Если виджет нативный, эта функция возвращает идентификатор нативного виджета. В противном случае возвращается идентификатор окна первого нативного родительского виджета, т. е. верхнего виджета, содержащего этот виджет.
Примечание: Рекомендуется не хранить это значение, так как оно может измениться во время выполнения.
Эта функция была введена в Qt 4.4.
См. также nativeParentWidget().
void QWidget::ensurePolished() const
Обеспечивает, что виджет и его дочерние элементы были отполированы QStyle (т. е. имеют правильный шрифт и палитру).
QWidget вызывает эту функцию после того, как он был полностью построен, но перед первым отображением. Вы можете вызвать эту функцию, если хотите убедиться, что виджет отполирован перед выполнением операции, например, размер шрифта может потребоваться в переопределении sizeHint() виджета. Обратите внимание, что эта функция *вызывается* из реализации по умолчанию sizeHint().
Полировка полезна для окончательной инициализации, которая должна происходить после вызова всех конструкторов (как базовых классов, так и подклассов).
Если вам нужно изменить некоторые параметры при полировке виджета, переопределите event() и обработайте тип события QEvent::Polish.
Примечание: Функция объявлена const, чтобы её можно было вызывать из других функций const (например, sizeHint()).
См. также event().
[virtual protected] void QWidget::enterEvent(QEvent *event)
Этот обработчик событий можно переопределить в подклассе, чтобы получить события входа в виджет, которые передаются в параметре event.
Событие отправляется виджету, когда курсор мыши входит в виджет.
См. также leaveEvent(), mouseMoveEvent() и event().
END_OF_DOCUMENT_MARKER
[override virtual protected] bool QWidget::event(QEvent *event)
Переопределено из QObject::event().
Это основной обработчик событий; он обрабатывает событие event. Вы можете переопределить эту функцию в подклассе, но рекомендуется использовать один из специализированных обработчиков событий вместо этого.
События нажатия и отпуска клавиш обрабатываются иначе, чем другие события. event() проверяет нажатия клавиш Tab и Shift+Tab и пытается соответствующим образом переместить фокус. Если нет виджета, на который можно переместить фокус (или нажатие клавиши не является Tab или Shift+Tab), event() вызывает keyPressEvent().
Обработка событий мыши и планшета также несколько специфична: только когда виджет включен, 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 для фактического определения. Если виджет с этим идентификатором отсутствует, возвращается 0.
[virtual protected] void QWidget::focusInEvent(QFocusEvent *event)
Этот обработчик событий может быть переопределен в подклассе для получения событий фокуса клавиатуры (фокус получен) для виджета. Событие передается в параметре event
Виджет обычно должен установить setFocusPolicy() на значение, отличное от Qt::NoFocus, чтобы получать события фокуса. (Обратите внимание, что программист приложения может вызвать setFocus() для любого виджета, даже тех, которые обычно не принимают фокус.)
Стандартная реализация обновляет виджет (за исключением окон, которые не задают focusPolicy()).
См. также focusOutEvent(), setFocusPolicy(), keyPressEvent(), keyReleaseEvent(), event() и QFocusEvent.
[protected] bool QWidget::focusNextChild()
Ищет новый виджет для передачи фокуса клавиатуры, как это требуется для Tab, и возвращает true если новый виджет найден, или false, если нет.
См. также focusPreviousChild().
[virtual protected] bool QWidget::focusNextPrevChild(bool next)
Ищет новый виджет для передачи фокуса клавиатуры, как это требуется для Tab и Shift+Tab, и возвращает true если новый виджет найден, или false, если нет.
Если next имеет значение true, функция выполняет поиск вперед, если next имеет значение false, выполняется поиск назад.
Иногда вам нужно переопределить эту функцию. Например, веб-браузер может переопределить ее, чтобы переместить свой «текущий активный элемент ссылки» вперед или назад, а затем вызвать focusNextPrevChild() только при достижении последней или первой ссылки на «странице».
Вложенные виджеты вызывают focusNextPrevChild() на своих родительских виджетах, но только окно, содержащее вложенные виджеты, решает, куда перенаправить фокус. Переопределяя эту функцию для объекта, вы получаете контроль над перемещением фокуса для всех дочерних виджетов.
См. также focusNextChild() и focusPreviousChild().
[virtual protected] void QWidget::focusOutEvent(QFocusEvent *event)
Этот обработчик событий может быть переопределен в подклассе для получения событий фокуса клавиатуры (фокус потерян) для виджета. Событие передаётся в параметре event.
Виджет обычно должен установить setFocusPolicy() на значение, отличное от Qt::NoFocus, чтобы получать события фокуса. (Обратите внимание, что программист приложения может вызвать setFocus() для любого виджета, даже тех, которые обычно не принимают фокус.)
Стандартная реализация обновляет виджет (за исключением окон, которые не задают focusPolicy()).
См. также focusInEvent(), setFocusPolicy(), keyPressEvent(), keyReleaseEvent(), event() и QFocusEvent.
[protected] bool QWidget::focusPreviousChild()
Ищет новый виджет для передачи фокуса клавиатуры, как это требуется для Shift+Tab, и возвращает true если новый виджет найден, или false, если нет.
См. также focusNextChild().
QWidget *QWidget::focusProxy() const
Возвращает прокси-виджет фокуса или 0, если прокси-виджета фокуса нет.
См. также 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
Возвращает роль переднего плана.
Роль переднего плана определяет цвет из палитры виджета, используемый для рисования переднего плана.
Если роль переднего плана не задана явно, функция возвращает роль, контрастирующую с ролью фона.
См. также setForegroundRole() и backgroundRole().
void QWidget::getContentsMargins(int *left, int *top, int *right, int *bottom) const
Возвращает отступы содержимого виджета для left, top, right и bottom.
См. также setContentsMargins() и contentsRect().
QPixmap QWidget::grab(const QRect &rectangle = QRect(QPoint(0, 0), QSize(-1, -1)))
Отображает виджет в pixmap, ограниченный заданной rectangle. Если у виджета есть дочерние виджеты, они также отрисовываются в соответствующих позициях.
Если указан прямоугольник с неверным размером (по умолчанию), рисуется весь виджет.
Эта функция была добавлена в Qt 5.0.
Примечание: К этой функции можно обратиться через систему метаобъектов и из QML. См. Q_INVOKABLE.
void QWidget::grabGesture(Qt::GestureType gesture, Qt::GestureFlags flags = ...)
Подписывает виджет на указанное gesture со специфическими flags.
Эта функция была добавлена в Qt 4.6.
См. также 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, следящий за заданной последовательностью key в заданном context. Если context равен Qt::ApplicationShortcut, ярлык применяется ко всему приложению. В противном случае, он либо локален для этого виджета (Qt::WidgetShortcut), либо для самого окна (Qt::WindowShortcut).
Если ту же последовательность key захватили несколько виджетов, при её возникновении событие QEvent::Shortcut отправляется всем виджетам, на которые оно распространяется, в неопределённом порядке, но с установленным флагом «неопределённость».
Предупреждение: Обычно вам не нужно использовать эту функцию; вместо этого создавайте QAction с необходимыми последовательностями клавиш (если вам также нужны эквивалентные пункты меню и кнопки инструментальной панели) или создавайте QShortcut, если вам нужны только последовательности клавиш. QAction и QShortcut обрабатывают всю фильтрацию событий за вас и предоставляют сигналы, которые срабатывают, когда пользователь нажимает последовательность клавиш, поэтому они намного удобнее в использовании, чем эта низкоуровневая функция.
См. также releaseShortcut() и setShortcutEnabled().
QGraphicsEffect *QWidget::graphicsEffect() const
Функция graphicsEffect возвращает указатель на графический эффект виджета.
Если у виджета нет графического эффекта, возвращается 0.
Эта функция была представлена в Qt 4.6.
См. также setGraphicsEffect().
QGraphicsProxyWidget *QWidget::graphicsProxyWidget() const
Возвращает прокси-виджет для соответствующего встроенного виджета в графическом представлении; в противном случае возвращает 0.
Эта функция была представлена в Qt 4.5.
См. также QGraphicsProxyWidget::createProxyForChildWidget() и QGraphicsScene::addWidget().
bool QWidget::hasEditFocus() const
Возвращает true , если этот виджет в данный момент имеет фокус редактирования; в противном случае false.
Эта функция доступна только в Qt для встраиваемой Linux-системы.
См. также setEditFocus() и QApplication::keypadNavigationEnabled().
[virtual] bool QWidget::hasHeightForWidth() const
Возвращает true , если предпочтительная высота виджета зависит от его ширины; в противном случае возвращает false.
Эта функция была представлена в Qt 5.0.
[virtual] int QWidget::heightForWidth(int w) const
Возвращает предпочтительную высоту этого виджета, учитывая ширину w.
Если у этого виджета есть макет, реализация по умолчанию возвращает предпочтительную высоту макета. Если макета нет, реализация по умолчанию возвращает -1, указывая, что предпочтительная высота не зависит от ширины.
[slot] void QWidget::hide()
Скрывает виджет. Эта функция эквивалентна setVisible(false).
Примечание: Если вы работаете с QDialog или его подклассами и вызываете функцию show() после этой функции, диалоговое окно будет отображаться в исходном положении.
См. также hideEvent(), isHidden(), show(), setVisible(), isVisible() и close().
[virtual protected] void QWidget::hideEvent(QHideEvent *event)
Обработчик событий может быть переопределён в подклассе для получения событий скрытия виджетов. Событие передаётся в параметре event.
События скрытия отправляются виджетам сразу после того, как они были скрыты.
Примечание: Виджет получает спонтанные события показа и скрытия, когда статус его отображения меняется системным окном, например, спонтанное событие скрытия, когда пользователь сворачивает окно, и спонтанное событие показа, когда окно восстанавливается. После получения спонтанного события скрытия виджет всё ещё считается видимым в смысле isVisible().
См. также visible, event() и QHideEvent.
[override virtual protected] void QWidget::initPainter(QPainter *painter) const
Инициализирует перо, фон и шрифт painter так же, как и у данного виджета. Эта функция вызывается автоматически при открытии рисовальщика на QWidget.
[virtual protected] void QWidget::inputMethodEvent(QInputMethodEvent *event)
Обработчик событий для события event может быть переопределён в подклассе для получения событий композиции метода ввода. Этот обработчик вызывается при изменении состояния метода ввода.
Обратите внимание, что при создании пользовательских виджетов редактирования текста атрибут окна Qt::WA_InputMethodEnabled должен быть явно установлен (с помощью функции setAttribute() ), чтобы получать события метода ввода.
Реализация по умолчанию вызывает event->ignore(), что отклоняет событие метода ввода. Дополнительные сведения см. в документации QInputMethodEvent.
См. также event() и QInputMethodEvent.
[virtual] QVariant QWidget::inputMethodQuery(Qt::InputMethodQuery query) const
Этот метод важен только для виджетов ввода. Он используется методом ввода для запроса набора свойств виджета, чтобы иметь возможность поддерживать сложные операции метода ввода, например, поддержку окружающего текста и повторные преобразования.
query указывает, какое свойство запрашивается.
См. также inputMethodEvent(), QInputMethodEvent, QInputMethodQueryEvent и inputMethodHints.
void QWidget::insertAction(QAction *before, QAction *action)
Вставляет действие action в список действий этого виджета перед действием before. Если before равен 0 или before — некорректное действие для этого виджета, действие добавляется в конец.
В QWidget может быть только по одному экземпляру каждого действия.
См. также removeAction(), addAction(), QMenu, contextMenuPolicy и actions().
void QWidget::insertActions(QAction *before, QList<QAction *> actions)
Вставляет действия actions в список действий этого виджета перед действием before. Если before равен 0 или before — некорректное действие для этого виджета, действия добавляются в конец.
У QWidget может быть не более одного действия каждого типа.
См. также removeAction(), QMenu, insertAction() и contextMenuPolicy.
bool QWidget::isAncestorOf(const QWidget *child) const
Возвращает true, если этот виджет является родителем (или прародителем и т. д. на любом уровне) заданного виджета child, и оба виджета находятся в одном окне; в противном случае возвращает false.
bool QWidget::isEnabledTo(const QWidget *ancestor) const
Возвращает true, если этот виджет станет активным, если ancestor активирован; в противном случае возвращает 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
Возвращает true, если этот виджет станет видимым, если ancestor показан; в противном случае возвращает false.
Истинное значение имеет место, если ни сам виджет, ни какой-либо его родитель до, но не включая ancestor, не был явно скрыт.
Эта функция всё ещё вернёт true, если виджет перекрыт другими окнами на экране, но мог бы быть физически виден, если бы он или они были перемещены.
isVisibleTo(0) идентично isVisible().
См. также show(), hide() и isVisible().
bool QWidget::isWindow() const
Возвращает true, если виджет является независимым окном, в противном случае возвращает false.
Окно — это виджет, который визуально не является потомком другого виджета и обычно имеет рамку и заголовок окна.
Окно может иметь родительский виджет. В этом случае он будет сгруппирован со своим родителем и удалён при удалении родителя, минимизирован при минимизации родителя и т. д. При поддержке менеджером окон у него также будет общая запись в панели задач с родителем.
Виджеты 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 и Пример Tetrix.
[virtual protected] void QWidget::keyReleaseEvent(QKeyEvent *event)
Этот обработчик событий, для события event, может быть переопределён в подклассе для получения событий отпускания клавиш для виджета.
Виджет должен принять фокус вначале и иметь фокус, чтобы получить событие отпускания клавиши.
Если вы переопределяете этот обработчик, очень важно вызывать реализацию базового класса, если вы не действуете по нажатой клавише.
По умолчанию реализация игнорирует событие, так что родительский виджет может его интерпретировать.
Обратите внимание, что QKeyEvent начинается с isAccepted() == true, поэтому вам не нужно вызывать QKeyEvent::accept() — просто не вызывайте реализацию базового класса, если вы действуете по клавише.
См. также keyPressEvent(), QEvent::ignore(), setFocusPolicy(), focusInEvent(), focusOutEvent(), event() и QKeyEvent.
[static] QWidget *QWidget::keyboardGrabber()
Возвращает виджет, который в данный момент получает входные данные клавиатуры.
Если ни один виджет в этом приложении в настоящее время не получает входные данные клавиатуры, возвращается 0.
См. также grabMouse() и mouseGrabber().
QLayout *QWidget::layout() const
Возвращает менеджер макета, установленный на этом виджете, или 0, если менеджер макета не установлен.
Менеджер макета задаёт геометрию потомков виджета, которые были добавлены в макет.
См. также setLayout(), sizePolicy() и Управление макетами.
[virtual protected] void QWidget::leaveEvent(QEvent *event)
Этот обработчик событий может быть переопределён в подклассе для получения событий выхода курсора из виджета, которые передаются в параметре event.
Событие выхода отправляется виджету, когда курсор мыши покидает виджет.
См. также enterEvent(), mouseMoveEvent() и event().
[slot] void QWidget::lower()
Перемещает виджет в самый низ стека родительского виджета.
После этого вызова виджет будет визуально находиться позади (и, следовательно, перекрываться) любых перекрывающихся виджетов-братьев.
См. также raise() и stackUnder().
QPoint QWidget::mapFrom(const QWidget *parent, const QPoint &pos) const
Преобразует координату виджета pos из системы координат parent в систему координат этого виджета. parent не должен быть 0 и должен быть родителем вызывающего виджета.
См. также mapTo(), mapFromParent(), mapFromGlobal() и underMouse().
QPoint QWidget::mapFromGlobal(const QPoint &pos) const
Преобразует глобальные экранные координаты pos в координаты виджета.
См. также mapToGlobal(), mapFrom() и mapFromParent().
QPoint QWidget::mapFromParent(const QPoint &pos) const
Преобразует координаты родительского виджета pos в координаты виджета.
То же, что и mapFromGlobal(), если у виджета нет родителя.
См. также mapToParent(), mapFrom(), mapFromGlobal() и underMouse().
QPoint QWidget::mapTo(const QWidget *parent, const QPoint &pos) const
Преобразует координату виджета pos в систему координат parent. parent не должен быть 0 и должен быть родителем вызывающего виджета.
См. также mapFrom(), mapToParent(), mapToGlobal() и underMouse().
QPoint QWidget::mapToGlobal(const QPoint &pos) const
Преобразует координаты виджета pos в глобальные экранные координаты. Например, mapToGlobal(QPoint(0,0)) даст глобальные координаты верхнего левого пикселя виджета.
См. также mapFromGlobal(), mapTo() и mapToParent().
QPoint QWidget::mapToParent(const QPoint &pos) const
Преобразует координаты виджета pos в координаты родительского виджета.
То же, что и mapToGlobal(), если у виджета нет родителя.
См. также mapFromParent(), mapTo(), mapToGlobal() и underMouse().
QRegion QWidget::mask() const
Возвращает маску, установленную в данный момент на виджете. Если маска не установлена, возвращается пустая область.
См. также setMask(), clearMask(), QRegion::isEmpty() и Пример часов с формой.
[override virtual protected] int QWidget::metric(QPaintDevice::PaintDeviceMetric m) const
Переопределено из QPaintDevice::metric().
Внутренняя реализация виртуальной функции QPaintDevice::metric().
m — метрика, которую нужно получить.
[virtual protected] void QWidget::mouseDoubleClickEvent(QMouseEvent *event)
Обработчик событий, для события event, может быть переопределен в подклассе для получения событий двойного щелчка мышью для виджета.
По умолчанию вызывает mousePressEvent().
Примечание: Виджет также получит события нажатия и отпускания мыши, помимо события двойного щелчка. Разработчик должен убедиться, что приложение правильно интерпретирует эти события.
См. также mousePressEvent(), mouseReleaseEvent(), mouseMoveEvent(), event() и QMouseEvent.
[static] QWidget *QWidget::mouseGrabber()
Возвращает виджет, который в данный момент захватывает входные данные мыши.
Если в приложении в данный момент не захвачен виджет мыши, возвращается 0.
См. также grabMouse() и keyboardGrabber().
[virtual protected] void QWidget::mouseMoveEvent(QMouseEvent *event)
Обработчик событий, для события event, может быть переопределён в подклассе для получения событий перемещения мыши для виджета.
Если отслеживание мыши выключено, события перемещения мыши происходят только в том случае, если нажата кнопка мыши во время перемещения. Если отслеживание мыши включено, события перемещения мыши происходят даже если ни одна кнопка мыши не нажата.
QMouseEvent::pos() сообщает о позиции курсора мыши, относительно данного виджета. Для событий нажатия и отпускания позиция обычно такая же, как и позиция последнего события перемещения мыши, но может отличаться, если рука пользователя дёргается. Это особенность системного интерфейса, а не Qt.
Если вы хотите отобразить подсказку немедленно, в то время как мышь перемещается (например, получить координаты мыши с помощью QMouseEvent::pos() и отобразить их как подсказку), сначала необходимо включить отслеживание мыши, как описано выше. Затем, чтобы убедиться, что подсказка обновляется немедленно, в своей реализации mouseMoveEvent() необходимо вызвать QToolTip::showText(), а не setToolTip().
См. также setMouseTracking(), mousePressEvent(), mouseReleaseEvent(), mouseDoubleClickEvent(), event(), QMouseEvent и Пример рисования.
[virtual protected] void QWidget::mousePressEvent(QMouseEvent *event)
Обработчик событий, для события event, может быть переопределён в подклассе для получения событий нажатия мыши для виджета.
Если вы создаёте новые виджеты в mousePressEvent(), то mouseReleaseEvent() может не работать так, как ожидается, в зависимости от системного интерфейса (или менеджера окон X11), расположения виджетов и других факторов.
По умолчанию реализует закрытие всплывающих виджетов при щелчке за пределами окна. Для других типов виджетов ничего не делает.
См. также mouseReleaseEvent(), mouseDoubleClickEvent(), mouseMoveEvent(), event(), QMouseEvent и Пример рисования.
[virtual protected] void QWidget::mouseReleaseEvent(QMouseEvent *event)
Обработчик событий, для события event, может быть переопределён в подклассе для получения событий отпускания мыши для виджета.
См. также mousePressEvent(), mouseDoubleClickEvent(), mouseMoveEvent(), event(), QMouseEvent и Пример рисования.
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, long *result)
Этот специальный обработчик событий может быть переопределён в подклассе для получения событий родной платформы, идентифицированных eventType, которые передаются в параметре message.
В своей переопределённой функции, если вы хотите остановить обработку события Qt, верните true и установите result. Если вернёте false, это событие родной платформы будет передано обратно Qt, которое преобразует событие в Qt-событие и отправит его виджету.
Примечание: События доставляются только в этот обработчик, если виджет имеет системную дескриптор окна.
Примечание: Эта функция заменяет функции фильтрации событий x11Event(), winEvent() и macEvent() Qt 4.
| Платформа | Идентификатор типа события | Тип сообщения | Тип результата |
|---|---|---|---|
| Windows | "windows_generic_MSG" | MSG * | LRESULT |
| macOS | "NSEvent" | NSEvent * |
QWidget *QWidget::nativeParentWidget() const
Возвращает родительский виджет для данного виджета, т.е. следующий родительский виджет, у которого есть системный идентификатор, или 0, если у него нет родственного родителя.
Эта функция была добавлена в Qt 4.4.
См. также effectiveWinId().
QWidget *QWidget::nextInFocusChain() const
Возвращает следующий виджет в цепочке фокуса этого виджета.
См. также previousInFocusChain().
void QWidget::overrideWindowFlags(Qt::WindowFlags flags)
Устанавливает флаги окна для виджета на flags без уведомления системного интерфейса.
Предупреждение: Не вызывайте эту функцию, если вы не точно знаете, что делаете.
См. также setWindowFlags().
[override virtual] QPaintEngine *QWidget::paintEngine() const
Переопределено из QPaintDevice::paintEngine().
Возвращает движок отрисовки виджета.
Обратите внимание, что пользователь не должен явно вызывать эту функцию, так как она предназначена только для переопределения. Функция вызывается внутри Qt, и реализация по умолчанию может не всегда возвращать корректный указатель.
[virtual protected] void QWidget::paintEvent(QPaintEvent *event)
Обработчик этого события можно переопределить в подклассе, чтобы получить события рисования, переданные в event.
Событие рисования — это запрос на перерисовку всего или части виджета. Оно может произойти по одной из следующих причин:
Многие виджеты могут просто перерисовать всю свою поверхность, когда их попросят, но некоторые медленные виджеты должны оптимизировать, рисуя только запрашиваемую область: QPaintEvent::region(). Эта оптимизация скорости не меняет результат, так как рисование обрезается до этой области во время обработки события. Например, QListView и QTableView делают это.
Qt также пытается ускорить рисование, объединяя несколько событий рисования в одно. Когда update() вызывается несколько раз или система окон отправляет несколько событий рисования, Qt объединяет эти события в одно событие с большей областью (см. QRegion::united()). Функция repaint() не позволяет оптимизировать это, поэтому мы рекомендуем использовать update() всякий раз, когда это возможно.
Когда происходит событие рисования, область обновления обычно была стерта, поэтому вы рисуете на фоне виджета.
Фон можно установить с помощью setBackgroundRole() и setPalette().
Начиная с Qt 4.0, QWidget автоматически использует буферизацию рисования, поэтому нет необходимости писать код буферизации рисования в paintEvent(), чтобы избежать мерцания.
Примечание: Обычно следует избегать вызова update() или repaint() внутри paintEvent(). Например, вызов update() или repaint() для дочерних элементов внутри paintEvent() приводит к неопределённому поведению; дочерний элемент может или не может получить событие рисования.
Предупреждение: Если вы используете пользовательский движок рисования без поддержки буфера Qt, Qt::WA_PaintOnScreen должен быть установлен. В противном случае QWidget::paintEngine() никогда не будет вызываться; вместо этого будет использоваться буфер.
См. также event(), repaint(), update(), QPainter, QPixmap, QPaintEvent и Пример аналоговых часов.
QWidget *QWidget::parentWidget() const
Возвращает родительский виджет или 0, если у него нет родительского виджета.
QWidget *QWidget::previousInFocusChain() const
Функция previousInFocusChain возвращает предыдущий виджет в цепочке фокуса этого виджета.
Эта функция была добавлена в Qt 4.6.
См. также nextInFocusChain().
[slot] void QWidget::raise()
Выводит этот виджет наверх стека родительского виджета.
После этого вызова виджет будет визуально находиться поверх любых перекрывающих его дочерних виджетов.
Примечание: При использовании activateWindow() можно вызвать эту функцию, чтобы убедиться, что окно расположено сверху.
См. также lower() и stackUnder().
void QWidget::releaseKeyboard()
Отпускает захват клавиатуры.
См. также grabKeyboard(), grabMouse() и releaseMouse().
void QWidget::releaseMouse()
Отпускает захват мыши.
См. также grabMouse(), grabKeyboard() и releaseKeyboard().
void QWidget::releaseShortcut(int id)
Удаляет ярлык с заданным id из системы ярлыков Qt. Виджет больше не будет получать события QEvent::Shortcut для последовательности клавиш ярлыка (если у него нет других ярлыков с той же последовательностью клавиш).
Предупреждение: Обычно вам не нужно использовать эту функцию, так как система ярлыков Qt автоматически удаляет ярлыки при уничтожении их родительского виджета. Лучше использовать QAction или QShortcut для обработки ярлыков, так как они проще в использовании, чем эта функция низкого уровня. Обратите также внимание, что это дорогостоящая операция.
См. также grabShortcut() и setShortcutEnabled().
void QWidget::removeAction(QAction *action)
Удаляет действие action из списка действий этого виджета.
См. также insertAction(), actions() и insertAction().
void QWidget::render(QPaintDevice *target, const QPoint &targetOffset = QPoint(), const QRegion &sourceRegion = QRegion(), QWidget::RenderFlags renderFlags = ...)
Отображает sourceRegion этого виджета в target, используя renderFlags для определения способа отображения. Отображение начинается с targetOffset в target. Например:
QPixmap pixmap(widget->size()); widget->render(&pixmap);
Если sourceRegion — это нулевая область, эта функция будет использовать QWidget::rect() в качестве области, то есть весь виджет.
Убедитесь, что вы вызвали QPainter::end() для активного художника устройства target (если таковой имеется) перед отображением. Например:
QPainter painter(this); ... painter.end(); myWidget->render(this);
Примечание: Чтобы получить содержимое QOpenGLWidget, используйте QOpenGLWidget::grabFramebuffer() вместо этого.
Примечание: Чтобы получить содержимое QGLWidget (устаревший), используйте QGLWidget::grabFrameBuffer() или QGLWidget::renderPixmap() вместо этого.
Эта функция была добавлена в Qt 4.3.
void QWidget::render(QPainter *painter, const QPoint &targetOffset = QPoint(), const QRegion &sourceRegion = QRegion(), QWidget::RenderFlags renderFlags = ...)
Это перегруженная функция.
Отображает виджет на устройство QPainter::device.
Преобразования и настройки, применённые к painter, будут использованы при отрисовке.
Примечание: painter должен быть активным. В macOS виджет будет отображён в QPixmap, а затем нарисован painter.
См. также QPainter::device().
[slot] void QWidget::repaint()
Перерисовывает виджет напрямую, вызвав paintEvent() немедленно, если обновления отключены или виджет скрыт.
Мы рекомендуем использовать repaint() только в том случае, если вам нужна немедленная перерисовка, например, во время анимации. Почти во всех случаях update() лучше, так как оно позволяет Qt оптимизировать скорость и свести к минимуму мерцание.
Предупреждение: Если вы вызываете repaint() в функции, которая может вызываться из paintEvent(), может произойти бесконечная рекурсия. Функция update() никогда не вызывает рекурсию.
См. также update(), paintEvent() и setUpdatesEnabled().
void QWidget::repaint(int x, int y, int w, int h)
Это перегруженная функция.
Этот вариант перерисовывает прямоугольник (x, y, w, h) внутри виджета.
Если w отрицательно, оно заменяется на width() - x, а если h отрицательно, оно заменяется на height() - y.
void QWidget::repaint(const QRect &rect)
Это перегруженная функция.
Этот вариант перерисовывает прямоугольник rect внутри виджета.
void QWidget::repaint(const QRegion &rgn)
Это перегруженная функция.
Этот вариант перерисовывает область rgn внутри виджета.
void QWidget::resize(int w, int h)
Это перегруженная функция.
Это соответствует resize(QSize(w, h)).
Примечание: Функция-сеттер для свойства size.
[virtual protected] void QWidget::resizeEvent(QResizeEvent *event)
Обработчик этого события может быть переопределён в подклассе, чтобы получить события изменения размера виджета, которые передаются в параметре event. При вызове resizeEvent() у виджета уже есть новая геометрия. Старый размер доступен через QResizeEvent::oldSize().
Виджет будет стёрт и получит событие рисования сразу после обработки события изменения размера. Рисование внутри этого обработчика не требуется (и не должно быть).
См. также moveEvent(), event(), resize(), QResizeEvent, paintEvent(), и Пример Scribble.
bool QWidget::restoreGeometry(const QByteArray &geometry)
Восстанавливает геометрию и состояние виджетов верхнего уровня, сохранённых в массиве байтов geometry. Возвращает true при успехе; в противном случае возвращает false.
Если восстановленная геометрия находится за пределами экрана, она будет изменена для размещения внутри доступной геометрии экрана.
Для восстановления геометрии, сохранённой с помощью QSettings, можно использовать такой код:
QSettings settings("MyCompany", "MyApp");
myWidget->restoreGeometry(settings.value("myWidget/geometry").toByteArray()); См. документацию Геометрия окна для обзора проблем с геометрией окон.
Используйте QMainWindow::restoreState() для восстановления геометрии и состояния панелей инструментов и плавающих окон.
Данная функция была введена в Qt 4.2.
См. также saveGeometry(), QSettings, QMainWindow::saveState(), и QMainWindow::restoreState().
QByteArray QWidget::saveGeometry() const
Сохраняет текущую геометрию и состояние виджетов верхнего уровня.
Для сохранения геометрии при закрытии окна можно реализовать обработчик закрытия таким образом:
void MyWidget::closeEvent(QCloseEvent *event)
{
QSettings settings("MyCompany", "MyApp");
settings.setValue("geometry", saveGeometry());
QWidget::closeEvent(event);
} См. документацию Геометрия окна для обзора проблем с геометрией окон.
Используйте QMainWindow::saveState() для сохранения геометрии и состояния панелей инструментов и плавающих окон.
Данная функция была введена в Qt 4.2.
См. также restoreGeometry(), QMainWindow::saveState(), и QMainWindow::restoreState().
void QWidget::scroll(int dx, int dy)
Прокручивает виджет, включая его дочерние элементы, на dx пикселей вправо и на dy пикселей вниз. Значения dx и dy могут быть отрицательными.
После прокрутки виджеты получат события paint для областей, которые нуждаются в перерисовке. Для виджетов, известные Qt как непрозрачные, это только новые открытые части. Например, если непрозрачный виджет прокручен влево на 8 пикселей, обновлению потребуются только 8-пиксельные полосы по правому краю.
Поскольку виджеты по умолчанию распространяют содержимое своих родителей, необходимо установить свойство autoFillBackground или использовать setAttribute() для установки атрибута Qt::WA_OpaquePaintEvent, чтобы сделать виджет непрозрачным.
Для виджетов, использующих распространение содержимого, прокрутка вызовет обновление всей области прокрутки.
См. также Прозрачность и буферизация.
void QWidget::scroll(int dx, int dy, const QRect &r)
Это перегруженная функция.
Этот вариант прокручивает только r и не перемещает дочерние элементы виджета.
Если r пустая или некорректная, результат не определён.
См. также QScrollArea.
void QWidget::setAttribute(Qt::WidgetAttribute attribute, bool on = true)
Устанавливает атрибут attribute для этого виджета, если on имеет значение true; в противном случае очищает атрибут.
См. также testAttribute().
void QWidget::setBackgroundRole(QPalette::ColorRole role)
Устанавливает роль фона виджета в role.
Роль фона определяет кисть из палитры виджета, которая используется для отрисовки фона.
Если 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().
См. также contentsMargins(), contentsRect() и getContentsMargins().
void QWidget::setContentsMargins(const QMargins &margins)
Это перегруженная функция.
Функция setContentsMargins устанавливает отступы вокруг содержимого виджета.
Устанавливает отступы вокруг содержимого виджета со значениями, определяемыми margins. Отступы используются системой компоновки и могут использоваться подклассами для указания области отрисовки (например, исключая рамку).
Изменение отступов вызовет событие resizeEvent().
Данная функция была введена в Qt 4.6.
См. также contentsRect() и getContentsMargins().
[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 для встраиваемой Linux-системы.
См. также hasEditFocus() и QApplication::keypadNavigationEnabled().
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)
Присваивает фокус ввода с клавиатуры этому виджету (или его прокси фокуса), если этот виджет или один из его родителей является активным окном. Аргумент reason будет передан в любое событие фокуса, отправленное из этой функции, он используется для объяснения причины получения виджетом фокуса. Если окно не активно, виджет получит фокус, когда окно станет активным.
Сначала событие изменения фокуса отправляется виджету, имеющему фокус (если таковой имеется), чтобы сообщить ему, что он вот-вот потеряет фокус. Затем фокус меняется, событие потери фокуса отправляется предыдущему элементу с фокусом, а событие получения фокуса — новому элементу, чтобы сообщить ему, что он только что получил фокус. (Ничего не происходит, если виджеты получения и потери фокуса совпадают.)
Примечание: На встраиваемых платформах setFocus() не приведет к открытию панели ввода методом ввода. Если вы хотите, чтобы это произошло, вы должны сами отправить виджету событие QEvent::RequestSoftwareInputPanel.
setFocus() предоставляет фокус виджету независимо от его политики фокуса, но не очищает захват клавиатуры (см. grabKeyboard()).
Обратите внимание, что если виджет скрыт, он не получит фокус, пока не будет показан.
Предупреждение: Если вы вызываете setFocus() в функции, которая сама может быть вызвана из focusOutEvent() или focusInEvent(), может возникнуть бесконечная рекурсия.
См. также hasFocus(), clearFocus(), focusInEvent(), focusOutEvent(), setFocusPolicy(), focusWidget(), QApplication::focusWidget(), grabKeyboard(), grabMouse(), Фокус клавиатуры в виджетах и QEvent::RequestSoftwareInputPanel.
[slot] void QWidget::setFocus()
Это перегруженная функция.
Предоставляет виджету (или его прокси фокуса) фокус ввода с клавиатуры, если этот виджет или один из его родителей является активным окном.
void QWidget::setFocusProxy(QWidget *w)
Устанавливает прокси фокуса виджета на виджет w. Если w равен 0, функция сбрасывает этот виджет, чтобы у него не было прокси фокуса.
Некоторые виджеты могут «иметь фокус», но создают дочерний виджет, например, QLineEdit, для фактического обработки фокуса. В этом случае виджет может установить line edit в качестве своего прокси фокуса.
setFocusProxy() устанавливает виджет, который фактически получит фокус, когда «этот виджет» его получит. Если есть прокси фокуса, setFocus() и hasFocus() работают с прокси фокуса.
См. также focusProxy().
void QWidget::setForegroundRole(QPalette::ColorRole role)
Устанавливает роль переднего плана виджета на role.
Роль переднего плана определяет цвет из палитры виджета, используемый для рисования переднего плана.
Если 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.
Примечание: Эта функция будет применять эффект к себе и всем своим дочерним элементам.
Примечание: Графические эффекты не поддерживаются для виджетов на основе OpenGL, таких как QGLWidget, QOpenGLWidget и QQuickWidget.
Эта функция была добавлена в Qt 4.6.
См. также graphicsEffect().
[slot] void QWidget::setHidden(bool hidden)
Функция-удобство, эквивалентная setVisible(!hidden).
См. также isHidden().
void QWidget::setLayout(QLayout *layout)
Устанавливает менеджер макета для этого виджета на layout.
Если на этом виджете уже установлен менеджер макета, QWidget не позволит вам установить другой. Вы должны сначала удалить существующий менеджер макета (возвращаемый layout() ) перед вызовом setLayout() с новым макетом.
Если 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() виджета, элементы управления системного окна в этой области могут или могут не отображаться в зависимости от платформы.
Обратите внимание, что этот эффект может быть медленным, если область особенно сложна.
См. также 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) в новом родителе.
Если новый родительский виджет находится в другом окне, перемещаемый виджет и его дочерние элементы добавляются в конец цепочки табуляции нового родительского виджета в том же внутреннем порядке, что и раньше. Если один из перемещенных виджетов имел фокус клавиатуры, setParent() вызывает clearFocus() для этого виджета.
Если новый родительский виджет находится в том же окне, что и старый родитель, установка родителя не изменяет порядок табуляции или фокус клавиатуры.
Если «новый» родительский виджет — это старый родительский виджет, эта функция ничего не делает.
Примечание: Виджет становится невидимым при изменении родителя, даже если он был ранее видимым. Вам необходимо вызвать show(), чтобы сделать виджет видимым снова.
Предупреждение: Вряд ли вам когда-либо понадобится эта функция. Если у вас есть виджет, который динамически меняет свое содержимое, гораздо проще использовать QStackedWidget.
См. также setWindowFlags().
void QWidget::setParent(QWidget *parent, Qt::WindowFlags f)
Это перегруженная функция.
Эта функция также принимает флаги виджета, f в качестве аргумента.
void QWidget::setShortcutAutoRepeat(int id, bool enable = true)
Если enable имеет значение true, автоматическое повторение ярлыка с заданным id включено; в противном случае оно отключено.
Эта функция была введена в Qt 4.2.
См. также 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)
Устанавливает стиль графического интерфейса виджета на style. Владение объектом стиля не передаётся.
Если стиль не задан, виджет использует стиль приложения, QApplication::style() вместо.
Установка стиля виджета не влияет на существующие или будущие дочерние виджеты.
Предупреждение: Эта функция особенно полезна для демонстрационных целей, когда вы хотите продемонстрировать возможности стилизации Qt. Реальные приложения должны избегать её и использовать вместо этого один согласованный стиль графического интерфейса.
Предупреждение: Стилевые таблицы Qt в настоящее время не поддерживаются для пользовательских подклассов QStyle. Мы планируем решить эту проблему в будущих выпусках.
См. также style(), QStyle, QApplication::style() и QApplication::setStyle().
[static] void QWidget::setTabOrder(QWidget *first, QWidget *second)
Устанавливает виджет second после виджета first в порядке фокуса.
Это фактически удаляет виджет second из его цепочки фокуса и вставляет его после виджета first.
Обратите внимание, что так как порядок табуляции виджета second изменён, вам следует упорядочить цепочку так:
setTabOrder(a, b); // a to b setTabOrder(b, c); // a to b to c setTabOrder(c, d); // a to b to c to d
а не так:
// WRONG setTabOrder(c, d); // c to d setTabOrder(a, b); // a to b AND c to d setTabOrder(b, c); // a to b to c, but not c to d
Если у first или second есть прокси фокуса, setTabOrder() корректно подставляет прокси.
Примечание: С Qt 5.10: Виджет, имеющий дочерний элемент как прокси фокуса, понимается как составной виджет. При установке порядка табуляции между одним или двумя составными виджетами локальный порядок табуляции внутри каждого из них будет сохранён. Это означает, что если оба виджета являются составными виджетами, результирующий порядок табуляции будет от последнего дочернего элемента внутри first до первого дочернего элемента внутри second.
См. также setFocusPolicy(), setFocusProxy() и Фокус клавиатуры в виджетах.
void QWidget::setWindowFlag(Qt::WindowType flag, bool on = true)
Устанавливает флаг окна flag для этого виджета, если on имеет значение true; в противном случае очищает флаг.
Эта функция была введена в Qt 5.9.
См. также setWindowFlags(), windowFlags() и windowType().
void QWidget::setWindowRole(const QString &role)
Устанавливает роль окна на role. Это имеет смысл только для окон на X11.
См. также windowRole().
void QWidget::setWindowState(Qt::WindowStates windowState)
Устанавливает состояние окна на windowState. Состояние окна — это сочетание значений Qt::WindowState: Qt::WindowMinimized, Qt::WindowMaximized, Qt::WindowFullScreen и Qt::WindowActive с применением операции OR.
Если окно не отображается (т. е. isVisible() возвращает false), состояние окна вступит в силу при вызове show(). Для видимых окон изменение происходит немедленно. Например, для переключения между полноэкранным и обычным режимами используйте следующий код:
w->setWindowState(w->windowState() ^ Qt::WindowFullScreen);
Для восстановления и активации минимизированного окна (при сохранении его максимального и/или полноэкранного состояния) используйте следующее:
w->setWindowState((w->windowState() & ~Qt::WindowMinimized) | Qt::WindowActive);
Вызов этой функции скроет виджет. Вам необходимо вызвать show(), чтобы снова сделать виджет видимым.
Примечание: На некоторых системах окон Qt::WindowActive не является мгновенным и может игнорироваться в определённых случаях.
Когда состояние окна изменяется, виджет получает changeEvent() типа QEvent::WindowStateChange.
См. также Qt::WindowState и windowState().
void QWidget::setupUi(QWidget *widget)
Настраивает пользовательский интерфейс для указанного widget.
Примечание: Эта функция доступна с виджетами, которые наследуются от описаний пользовательского интерфейса, созданных с помощью uic.
См. также Использование файла UI Designer в вашем приложении.
[slot] void QWidget::show()
Отображает виджет и его дочерние виджеты.
Это эквивалентно вызову 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()
Отображает виджет в полноэкранном режиме.
Вызов этой функции влияет только на окна.
Чтобы выйти из полноэкранного режима, вызовите showNormal().
Полноэкранный режим работает нормально в Windows, но имеет определённые проблемы в X. Эти проблемы связаны с ограничениями протокола ICCCM, который определяет взаимодействие между клиентами X11 и менеджером окон. ICCCM просто не понимает концепции окон в полноэкранном режиме без декораций. Поэтому всё, что мы можем сделать, это запросить окно без рамки и разместить/изменить его размер, чтобы заполнить весь экран. В зависимости от менеджера окон это может или не может работать. Окно без рамки запрашивается с помощью подсказок MOTIF, которые хотя бы частично поддерживаются практически всеми современными менеджерами окон.
Альтернативой было бы полное обход менеджера окон и создание окна с флагом Qt::X11BypassWindowManagerHint. Однако это имеет другие серьёзные проблемы, такие как полностью сломанный фокус клавиатуры и очень странные эффекты при изменении рабочего стола или когда пользователь открывает другие окна.
Менеджеры окон X11, которые следуют современным спецификациям после ICCCM, должным образом поддерживают полноэкранный режим.
См. также showNormal(), showMaximized(), show(), hide() и isVisible().
[slot] void QWidget::showMaximized()
Отображает виджет, развернув его на весь экран.
Вызов этой функции влияет только на окна.
В X11 эта функция может не работать должным образом с определёнными менеджерами окон. См. документацию по геометрии окна для объяснения.
См. также setWindowState(), showNormal(), showMinimized(), show(), hide() и isVisible().
[slot] void QWidget::showMinimized()
Минимизирует виджет, отображая его в виде значка.
Вызов этой функции затрагивает только окна.
См. также showNormal(), showMaximized(), show(), hide(), isVisible() и isMinimized().
[slot] void QWidget::showNormal()
Возвращает виджет в исходное состояние после максимизации или минимизации.
Вызов этой функции затрагивает только окна.
См. также 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() событие, если вы его не обрабатываете, чтобы родительский виджет мог интерпретировать его.
По умолчанию событие игнорируется.
Если отслеживание планшета выключено, события перемещения планшета происходят только тогда, когда стилус контактирует с планшетом, или нажата хотя бы одна кнопка стилуса, в то время как стилус перемещается. Если отслеживание планшета включено, события перемещения планшета происходят даже когда стилус находится вблизи планшета без нажатых кнопок.
См. также QEvent::ignore(), QEvent::accept(), event(), setTabletTracking() и QTabletEvent.
bool QWidget::testAttribute(Qt::WidgetAttribute attribute) const
Возвращает true если атрибут attribute установлен для этого виджета; в противном случае возвращает false.
См. также setAttribute().
bool QWidget::underMouse() const
Возвращает true если виджет находится под курсором мыши; в противном случае возвращает false.
Это значение не обновляется должным образом во время операций перетаскивания.
См. также enterEvent() и leaveEvent().
void QWidget::ungrabGesture(Qt::GestureType gesture)
Отписывает виджет от указанного типа жеста gesture
Функция была добавлена в Qt 4.6.
См. также grabGesture() и QGestureEvent.
[slot] void QWidget::update()
Обновляет виджет, если обновления не отключены и виджет не скрыт.
Эта функция не вызывает немедленного перерисовки; вместо этого она планирует событие рисования для обработки, когда Qt возвращается к главному циклу событий. Это позволяет Qt оптимизировать производительность и минимизировать мерцание по сравнению с вызовом repaint().
Вызов update() несколько раз обычно приводит к вызову одного события paintEvent().
Qt обычно стирает область виджета перед вызовом paintEvent(). Если атрибут виджета Qt::WA_OpaquePaintEvent установлен, виджет отвечает за отрисовку всех своих пикселей непрозрачным цветом.
См. также repaint(), paintEvent(), setUpdatesEnabled() и Пример аналоговых часов.
void QWidget::update(int x, int y, int w, int h)
Это перегруженная функция.
Этот вариант обновляет прямоугольник (x, y, w, h) внутри виджета.
void QWidget::update(const QRect &rect)
Это перегруженная функция.
Этот вариант обновляет прямоугольник rect внутри виджета.
void QWidget::update(const QRegion &rgn)
Это перегруженная функция.
Этот вариант перерисовывает область rgn внутри виджета.
void QWidget::updateGeometry()
Уведомляет систему компоновки, что виджет изменился и, возможно, геометрия требует изменения.
Вызовите эту функцию, если изменились sizeHint() или sizePolicy().
Для явно скрытых виджетов updateGeometry() является пустой операцией. Система компоновки будет уведомлена как только виджет будет показан.
[protected slot] void QWidget::updateMicroFocus()
Обновляет микрофокус виджета.
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().
Функция была добавлена в Qt 5.0.
См. также winId().
[signal] void QWidget::windowIconChanged(const QIcon &icon)
Этот сигнал испускается, когда значок окна изменился, со значением нового значка icon в качестве аргумента.
Функция была добавлена в Qt 5.2.
Примечание: Сигнал-уведомление для свойства windowIcon.
QString QWidget::windowRole() const
Возвращает роль окна или пустую строку.
См. также setWindowRole(), windowIcon и windowTitle.
Qt::WindowStates QWidget::windowState() const
Возвращает текущее состояние окна. Состояние окна — это OR-комбинация состояний Qt::WindowState: Qt::WindowMinimized, Qt::WindowMaximized, Qt::WindowFullScreen и Qt::WindowActive.
См. также Qt::WindowState и setWindowState().
END_OF_DOCUMENT_MARKER
[signal] void QWidget::windowTitleChanged(const QString &title)
Этот сигнал излучается, когда заголовок окна изменился, с новым заголовком в качестве аргумента.
Эта функция была представлена в Qt 5.2.
Примечание: Сигнал-уведомление для свойства windowTitle.
Qt::WindowType QWidget::windowType() const
Возвращает тип окна данного виджета. Это идентично windowFlags() & Qt::WindowType_Mask.
См. также windowFlags.
Документация макросов
QWIDGETSIZE_MAX
Определяет максимальный размер объекта QWidget.
Наибольший разрешенный размер для виджета — QSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX), т.е. QSize (16777215,16777215).
См. также QWidget::setMaximumSize().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.11/qwidget.html