Spec-Zone.ru › Qt 5.9

Класс QWidget

Класс QWidget является базовым классом всех объектов пользовательского интерфейса. Подробнее...

Заголовок: #include <QWidget>
qmake: QT += widgets
Наследует: QObject и QPaintDevice
Наследуется от:

QAbstractButton, QAbstractSlider, QAbstractSpinBox, QAxWidget, QCalendarWidget, QComboBox, QDesignerActionEditorInterface, QDesignerFormWindowInterface, QDesignerObjectInspectorInterface, QDesignerPropertyEditorInterface, QDesignerWidgetBoxInterface, QDesktopWidget, QDialog, QDialogButtonBox, QDockWidget, QFocusFrame, QFrame, QGLWidget, QGroupBox, QHelpSearchQueryWidget, QHelpSearchResultWidget, QKeySequenceEdit, QLineEdit, QMacCocoaViewContainer, QMacNativeWidget, QMainWindow, QMdiSubWindow, QMenu, QMenuBar, QOpenGLWidget, QPrintPreviewWidget, QProgressBar, QQuickWidget, QRubberBand, QSizeGrip, QSplashScreen, QSplitterHandle, QStatusBar, QSvgWidget, QTabBar, QTabWidget, QToolBar, QVideoWidget, QWebEngineView, и QWizardPage

  • Список всех членов, включая унаследованные
  • Устаревшие члены

Открытые типы

перечисление RenderFlag { DrawWindowBackground, DrawChildren, IgnoreMask }
флаги RenderFlags

Свойства

  • acceptDrops : bool
  • accessibleDescription : QString
  • accessibleName : QString
  • autoFillBackground : bool
  • baseSize : QSize
  • childrenRect : const QRect
  • childrenRegion : const QRegion
  • contextMenuPolicy : Qt::ContextMenuPolicy
  • cursor : QCursor
  • enabled : bool
  • focus : const bool
  • focusPolicy : Qt::FocusPolicy
  • font : QFont
  • frameGeometry : const QRect
  • frameSize : const QSize
  • fullScreen : const bool
  • geometry : QRect
  • height : const int
  • inputMethodHints : Qt::InputMethodHints
  • isActiveWindow : const bool
  • layoutDirection : Qt::LayoutDirection
  • locale : QLocale
  • maximized : const bool
  • maximumHeight : int
  • maximumSize : QSize
  • maximumWidth : int
  • minimized : const bool
  • minimumHeight : int
  • minimumSize : QSize
  • minimumSizeHint : const QSize
  • minimumWidth : int
  • modal : const bool
  • mouseTracking : bool
  • normalGeometry : const QRect
  • palette : QPalette
  • pos : QPoint
  • rect : const QRect
  • size : QSize
  • sizeHint : const QSize
  • sizeIncrement : QSize
  • sizePolicy : QSizePolicy
  • statusTip : QString
  • styleSheet : QString
  • tabletTracking : bool
  • toolTip : QString
  • toolTipDuration : int
  • updatesEnabled : bool
  • visible : bool
  • whatsThis : QString
  • width : const int
  • windowFilePath : QString
  • windowFlags : Qt::WindowFlags
  • windowIcon : QIcon
  • windowModality : Qt::WindowModality
  • windowModified : bool
  • windowOpacity : double
  • windowTitle : QString
  • x : const int
  • y : const int
  • 1 свойство унаследовано от QObject

Открытые функции

QWidget(QWidget *parent = Q_NULLPTR, Qt::WindowFlags f = Qt::WindowFlags())
~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 курсор() 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 = Qt::GestureFlags())
void grabKeyboard()
void grabMouse()
void grabMouse(const QCursor &cursor)
int grabShortcut(const QKeySequence &key, Qt::ShortcutContext context = Qt::WindowShortcut)
QGraphicsEffect * graphicsEffect() const
QGraphicsProxyWidget * graphicsProxyWidget() const
bool hasEditFocus() const
bool hasFocus() const
virtual bool hasHeightForWidth() const
bool hasMouseTracking() const
bool hasTabletTracking() const
int height() const
virtual int heightForWidth(int w) const
Qt::InputMethodHints inputMethodHints() const
virtual QVariant inputMethodQuery(Qt::InputMethodQuery query) const
void insertAction(QAction *before, QAction *action)
void insertActions(QAction *before, 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
END_OF_DOCUMENT_MARKER
bool минимизирован() const
bool модальный() const
bool видим() const
bool видимДля(const QWidget *ancestor) const
bool являетсяОкном() const
bool изменёнОкно() const
QLayout * макет() const
Qt::LayoutDirection направлениеМакет() const
QLocale язык() const
QPoint переводИз(const QWidget *parent, const QPoint &pos) const
QPoint переводИзГлобали(const QPoint &pos) const
QPoint переводИзРодителя(const QPoint &pos) const
QPoint переводВ(const QWidget *parent, const QPoint &pos) const
QPoint переводВГлобали(const QPoint &pos) const
QPoint переводВРодителя(const QPoint &pos) const
QRegion маска() const
int максимальнаяВысота() const
QSize максимальныйРазмер() const
int максимальнаяШирина() const
int минимальнаяВысота() const
QSize минимальныйРазмер() const
virtual QSize минимальнаяРекомендуемаяРазмер() const
int минимальнаяШирина() const
void переместить(const QPoint &)
void переместить(int x, int y)
QWidget * роднойРодительскийЭлемент() const
QWidget * следующийВЦепиФокуса() const
QRect нормальнаяГеометрия() const
void переопределитьФлагиОкна(Qt::WindowFlags flags)
const QPalette & палитра() const
QWidget * родительскийЭлемент() const
QPoint позиция() const
QWidget * предыдущийВЦепиФокуса() const
QRect прямоугольник() const
void освободитьКлавиатуру()
void освободитьМышь()
void освободитьСочетаниеКлавиш(int id)
void удалитьДействие(QAction *action)
void отрисовать(QPaintDevice *target, const QPoint &targetOffset = QPoint(), const QRegion &sourceRegion = QRegion(), RenderFlags renderFlags = RenderFlags( DrawWindowBackground | DrawChildren ))
void отрисовать(QPainter *painter, const QPoint &targetOffset = QPoint(), const QRegion &sourceRegion = QRegion(), RenderFlags renderFlags = RenderFlags( DrawWindowBackground | DrawChildren ))
void перерисовать(int x, int y, int w, int h)
void перерисовать(const QRect &rect)
void перерисовать(const QRegion &rgn)
void изменитьРазмер(const QSize &)
void изменитьРазмер(int w, int h)
bool восстановитьГеометрию(const QByteArray &geometry)
QByteArray сохранитьГеометрию() const
void прокрутить(int dx, int dy)
void прокрутить(int dx, int dy, const QRect &r)
void разрешитьПеретаскивание(bool on)
void доступноеОписание(const QString &description)
void доступноеИмя(const QString &name)
void установитьАтрибут(Qt::WidgetAttribute attribute, bool on = true)
void автоЗаполнениеФона(bool enabled)
void установитьРольФона(QPalette::ColorRole role)
void установитьБазовыйРазмер(const QSize &)
void установитьБазовыйРазмер(int basew, int baseh)
void установитьПоляСодержимого(int left, int top, int right, int bottom)
void установитьПоляСодержимого(const QMargins &margins)
void установитьПолитикуКонтекстногоМеню(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 &region)
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
  • 32 общедоступных функции, унаследованные от 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 = Q_NULLPTR, Qt::WindowFlags flags = Qt::WindowFlags())
QWidget * find(WId id)
QWidget * keyboardGrabber()
QWidget * mouseGrabber()
void setTabOrder(QWidget *first, QWidget *second)
  • 11 статических общедоступных членов, унаследованных от 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)
виртуальный void initPainter(QPainter *painter) const
виртуальный int metric(PaintDeviceMetric m) const
  • 9 защищённых функций, унаследованных от QObject
  • 1 защищённая функция, унаследованная от QPaintDevice

Защищённые слоты

void updateMicroFocus()

Макросы

QWIDGETSIZE_MAX

Подробное описание

Класс QWidget — базовый класс всех объектов пользовательского интерфейса.

Виджет — атом пользовательского интерфейса: он получает события мыши, клавиатуры и другие события от системы окон и рисует своё представление на экране. Каждый виджет прямоугольный, и они упорядочены в порядке Z. Виджет отсекается своим родителем и виджетами, которые находятся перед ним.

Виджет, который не вложен в родительский виджет, называется окном. Обычно окна имеют рамку и строку заголовка, хотя также возможно создать окна без такой декорации, используя соответствующие флаги окна.

Каждый конструктор виджета принимает один или два стандартных аргумента:

  1. QWidget *parent = 0 — родитель нового виджета. Если он равен 0 (по умолчанию), новый виджет будет окном. В противном случае он будет дочерним виджетом parent и будет ограничен геометрией parent (если не указан флаг окна Qt::Window).
  2. Qt::WindowFlags f = 0 (если доступно) устанавливает флаги окна; значение по умолчанию подходит для почти всех виджетов, но чтобы получить, например, окно без рамки, необходимо использовать специальные флаги.

QWidget имеет много функций-членов, но некоторые из них имеют мало непосредственной функциональности; например, QWidget имеет свойство шрифта, но никогда не использует его сам. Существует много подклассов, которые обеспечивают реальную функциональность, такие как QLabel, QPushButton, QListWidget и QTabWidget.

Главные и дочерние виджеты

Виджет без родительского виджета всегда является независимым окном (главный виджет). Для этих виджетов setWindowTitle() и setWindowIcon() устанавливают соответственно строку заголовка и значок.

Неокна виджеты являются дочерними виджетами, отображаемыми внутри своих родительских виджетов. Большинство виджетов в Qt в основном полезны как дочерние виджеты. Например, можно отобразить кнопку как главное окно, но большинство людей предпочитают размещать кнопки внутри других виджетов, таких как QDialog.

A parent widget containing various child widgets.

На диаграмме показано использование виджета QGroupBox для размещения различных дочерних виджетов в макете, предоставляемом QGridLayout. Дочерние виджеты QLabel выделены, чтобы показать их полные размеры.

Если вы хотите использовать QWidget для размещения дочерних виджетов, вам обычно нужно добавить макет в родительский QWidget. Дополнительную информацию см. в разделе Управление макетами.

Составные виджеты

Когда виджет используется в качестве контейнера для группирования нескольких дочерних виджетов, он известен как составной виджет. Их можно создать, создав виджет с необходимыми визуальными свойствами (например, QFrame) и добавив к нему дочерние виджеты, обычно управляемые макетом. На диаграмме выше показан такой составной виджет, который был создан с помощью Qt Designer.

Составные виджеты также можно создать, создав подкласс стандартного виджета, такого как 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 (для перемещения фокуса клавиатуры) и передает большинство других событий одному из более специализированных обработчиков выше.

События и механизм их доставки описаны в Системе событий.

Группы функций и свойств

Контекст Функции и свойства
Функции окна show(), hide(), raise(), lower(), close().
Окна верхнего уровня windowModified, windowTitle, windowIcon, isActiveWindow, activateWindow(), minimized, showMinimized(), maximized, showMaximized(), fullScreen, showFullScreen(), showNormal().
Содержание окна update(), repaint(), scroll().
Геометрия pos, x(), y(), rect, size, width(), height(), move(), resize(), sizePolicy, sizeHint(), minimumSizeHint(), updateGeometry(), layout(), frameGeometry, geometry, childrenRect, childrenRegion, adjustSize(), mapFromGlobal(), mapToGlobal(), mapFromParent(), mapToParent(), maximumSize, minimumSize, sizeIncrement, baseSize, setFixedSize()
Режим visible, isVisibleTo(), enabled, isEnabledTo(), modal, isWindow(), mouseTracking, updatesEnabled, visibleRegion().
Внешний вид style(), setStyle(), styleSheet, cursor, font, palette, backgroundRole(), setBackgroundRole(), fontInfo(), fontMetrics().
Функции фокуса клавиатуры focus, focusPolicy, setFocus(), clearFocus(), setTabOrder(), setFocusProxy(), focusNextChild(), focusPreviousChild().
Захват мыши и клавиатуры grabMouse(), releaseMouse(), grabKeyboard(), releaseKeyboard(), mouseGrabber(), keyboardGrabber().
Обработчики событий event(), mousePressEvent(), mouseReleaseEvent(), mouseDoubleClickEvent(), mouseMoveEvent(), keyPressEvent(), keyReleaseEvent(), focusInEvent(), focusOutEvent(), wheelEvent(), enterEvent(), leaveEvent(), paintEvent(), moveEvent(), resizeEvent(), closeEvent(), dragEnterEvent(), dragMoveEvent(), dragLeaveEvent(), dropEvent(), childEvent(), showEvent(), hideEvent(), customEvent(). changeEvent(),
Системные функции parentWidget(), window(), setParent(), winId(), find(), metric().
Контекстное меню contextMenuPolicy, contextMenuEvent(), customContextMenuRequested(), actions()
Интерактивная справка setToolTip(), setWhatsThis()

Стили виджетов

В дополнение к стандартным стилям виджетов для каждой платформы, виджеты также могут быть стилизованы согласно правилам, указанным в стилевом листе. Эта функция позволяет настроить внешний вид определенных виджетов, чтобы предоставить пользователю визуальные подсказки о их назначении. Например, кнопку можно стилизовать определенным образом, чтобы указать, что она выполняет деструктивное действие.

Использование стилевых листов виджетов описано более подробно в документе Стили Qt.

Прозрачность и буферизация

С 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, внешние виджеты — это виджеты, неизвестные системе окон. У них нет связанной с ними родной дескриптора окна. Эта функция значительно ускоряет отрисовку, изменение размера виджетов и устраняет мерцание.

Если вам требуется старое поведение с родными окнами, вы можете выбрать один из следующих вариантов:

  1. Используйте QT_USE_NATIVE_WINDOWS=1 в вашей среде.
  2. Установите атрибут Qt::AA_NativeWindows для вашего приложения. Все виджеты будут родными виджетами.
  3. Установите атрибут Qt::WA_NativeWindow на виджетах: сам виджет и все его предки станут родными (если не установлен Qt::WA_DontCreateNativeAncestors).
  4. Вызовите QWidget::winId, чтобы принудительно установить родное окно (это подразумевает 3).
  5. Установите атрибут Qt::WA_PaintOnScreen, чтобы принудительно установить родное окно (это подразумевает 3).

См. также QEvent, QPainter, QGridLayout и QBoxLayout.

Документация по типам членов

enum QWidget::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

Это свойство указывает, включены ли события перетаскивания для этого виджета

Установка этого свойства в значение true сообщает системе, что этот виджет может принимать события перетаскивания.

Если виджет является рабочим столом (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 заполнить фон виджета перед вызовом события рисования. Используемый цвет определяется ролью цвета QPalette::Window из палитры виджета.

Кроме того, окна всегда заполняются цветом QPalette::Window, если не установлены атрибуты WA_OpaquePaintEvent или WA_NoSystemBackground.

Это свойство не может быть отключено (т.е. установлено в false), если у родительского виджета есть статический градиент для фона.

Предупреждение: Используйте это свойство с осторожностью в сочетании со таблицами стилей 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 XP и Vista, применяют специальные модификации к шрифту виджета для соответствия собственному внешнему виду платформы. По этой причине назначение свойств шрифту виджета не гарантирует изменения внешнего вида виджета. Вместо этого вы можете применить styleSheet.

Примечание: Если стили Qt используются на том же виджете, что и setFont(), стили будут иметь приоритет в случае конфликта настроек.

Функции доступа:

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's перо.

Значение по умолчанию зависит от среды системы. QApplication поддерживает системную/тема палитру, которая служит значением по умолчанию для всех виджетов. Также могут быть специальные палитры по умолчанию для определённых типов виджетов (например, в Windows XP и Vista, все классы, которые наследуются от QMenuBar, имеют специальную палитру по умолчанию). Вы также можете определить палитры по умолчанию для виджетов, передав пользовательскую палитру и имя виджета в QApplication::setPalette(). Наконец, стиль всегда имеет возможность полировать палитру при её назначении (см. QStyle::polish()).

QWidget распространяет явные роли палитры от родителя к дочерним элементам. Если вы назначите кисть или цвет определённой роли в палитре и назначите эту палитру виджету, эта роль будет распространена на все дочерние элементы виджета, переопределяя любые системные значения по умолчанию для этой роли. Обратите внимание, что палитры по умолчанию не распространяются на окна (см. isWindow()), если не включен атрибут Qt::WA_WindowPropagation.

Распространение палитры в QWidget аналогично распространению шрифтов.

Текущий стиль, который используется для отображения содержимого всех стандартных виджетов Qt, свободен выбирать цвета и кисти из палитры виджета или, в некоторых случаях, игнорировать палитру (частично или полностью). В частности, такие стили, как GTK, Mac, Windows XP и Vista, зависят от сторонних API для отрисовки содержимого виджетов, и эти стили, как правило, не следуют палитре. Из-за этого назначение ролей в палитре виджета не гарантирует изменение внешнего вида виджета. Вместо этого, вы можете применить styleSheet. Подробнее об этом вы можете узнать в нашей базе знаний по адресу здесь.

Предупреждение: Не используйте эту функцию совместно с Стили 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

Это свойство указывает, какие окна заблокированы модальным виджетом.

Это свойство имеет смысл только для окон. Модальный виджет предотвращает получение ввода виджетами в других окнах. Значение этого свойства управляет тем, какие окна заблокированы, когда виджет видим. Изменение этого свойства, когда окно видимо, не имеет эффекта; вы должны сначала hide() виджет, а затем show() его снова.

По умолчанию это свойство равно 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 = Q_NULLPTR, Qt::WindowFlags f = Qt::WindowFlags())

Создаёт виджет, который является дочерним элементом parent с флагами виджета, установленными в f.

Если parent равен 0, новый виджет становится окном. Если parent — это другой виджет, этот виджет становится дочерним окном внутри parent. Новый виджет удаляется при удалении его parent.

Аргумент флагов виджета, f, обычно равен 0, но его можно установить для настройки рамки окна (то есть parent должен быть 0). Для настройки рамки используйте значение, составленное из побитового ИЛИ любого из флагов окна.

Если вы добавляете дочерний виджет к уже видимому виджету, вы должны явно показать дочерний виджет, чтобы он стал видимым.

Обратите внимание, что версия Qt для X11 может не поддерживать все комбинации флагов стиля на всех системах. Это связано с тем, что в X11 Qt может запрашивать только менеджер окон, а менеджер окон может переопределять настройки приложения. В Windows Qt может устанавливать любые нужные флаги.

См. также windowFlags.

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(), если она допустима, т.е. ширина и высота size hint не меньше 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.

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 event, чтобы сообщить ему о потере фокуса.

Этот виджет должен разрешать установку фокуса, чтобы получить фокус клавиатуры, т. е. должен вызвать setFocusPolicy().

См. также hasFocus(), setFocus(), focusInEvent(), focusOutEvent(), setFocusPolicy() и QApplication::focusWidget().

void QWidget::clearMask()

Удаляет любую маску, установленную с помощью setMask().

См. также setMask().

bool QWidget::close()

Закрывает этот виджет. Возвращает true если виджет был закрыт; в противном случае возвращает false.

Сначала ему отправляется событие QCloseEvent. Виджет скрывается, если он принимает событие закрытия. Если он игнорирует событие, ничего не происходит. По умолчанию реализация QWidget::closeEvent() принимает событие закрытия.

Если у виджета установлен флаг Qt::WA_DeleteOnClose, он также удаляется. Событие закрытия доставляется виджету независимо от того, виден он или нет.

Сигнал QApplication::lastWindowClosed() генерируется, когда закрывается последнее видимое основное окно (т. е. окно без родителя) с атрибутом Qt::WA_QuitOnClose. По умолчанию этот атрибут установлен для всех виджетов, кроме временных окон, таких как всплывающие экраны, окна инструментов и всплывающие меню.

void QWidget::closeEvent(QCloseEvent *event)

Этот обработчик событий вызывается с заданным event, когда Qt получает запрос на закрытие окна для верхнеуровневого виджета от системы окон.

По умолчанию событие принимается, и виджет закрывается. Вы можете переопределить эту функцию, чтобы изменить способ реагирования виджета на запросы закрытия окна. Например, вы можете предотвратить закрытие окна, вызвав ignore() для всех событий.

Приложения с главным окном обычно используют переопределения этой функции для проверки, сохранена ли работа пользователя, и запроса разрешения на закрытие. Например, пример приложения использует вспомогательную функцию, чтобы определить, следует ли закрывать окно:

void MainWindow::closeEvent(QCloseEvent *event)
{
    if (maybeSave()) {
        writeSettings();
        event->accept();
    } else {
        event->ignore();
    }
}

См. также event(), hide(), close(), QCloseEvent и пример приложения.

QMargins QWidget::contentsMargins() const

Функция contentsMargins возвращает отступы содержимого виджета.

Эта функция была введена в Qt 4.6.

См. также getContentsMargins(), setContentsMargins() и contentsRect().

QRect QWidget::contentsRect() const

Возвращает область внутри отступов виджета.

См. также setContentsMargins() и getContentsMargins().

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 = Q_NULLPTR, Qt::WindowFlags flags = Qt::WindowFlags())

Создает 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 с помощью фокуса табуляции, дальнейшие нажатия клавиш табуляции, скорее всего, будут циклировать только внутри приложения 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().

[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.

Виджет обычно должен установить политику фокуса на значение, отличное от Qt::NoFocus, чтобы получать события фокуса. (Обратите внимание, что программист приложения может вызвать setFocus() для любого виджета, даже для тех, которые обычно не принимают фокус).

Реализация по умолчанию обновляет виджет (за исключением окон, которые не задают политику фокуса).

См. также 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.

Виджет обычно должен установить политику фокуса на значение, отличное от Qt::NoFocus, чтобы получать события фокуса. (Обратите внимание, что программист приложения может вызвать setFocus() для любого виджета, даже для тех, которые обычно не принимают фокус).

Реализация по умолчанию обновляет виджет (за исключением окон, которые не задают политику фокуса).

См. также 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 ) ))

Отображает виджет в пиксель, ограниченный заданной прямоугольной областью rectangle. Если виджет имеет дочерние элементы, то они также отрисовываются в соответствующих позициях.

Если указана прямоугольная область с недопустимым размером (значение по умолчанию), то отрисовывается весь виджет.

Эта функция была добавлена в Qt 5.0.

См. также render() и QPixmap.

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

Подписывает виджет на определённое 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 отправляется всем виджетам, к которым оно относится, в не определённом порядке, но с флагом «неопределённым» установленным в значение true.

Предупреждение: Обычно вам не нужно использовать эту функцию; вместо этого создайте 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.

[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() и Пример часов с формой.

[virtual protected] int QWidget::metric(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() и отобразить их как подсказку), вы должны сначала включить отслеживание мыши, как описано выше. Затем, чтобы гарантировать, что подсказка обновляется немедленно, вы должны вызвать QToolTip::showText() вместо setToolTip() в вашей реализации mouseMoveEvent().

См. также 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

QWidget *QWidget::nativeParentWidget() const

Возвращает родительский виджет нативной платформы для данного виджета, то есть следующий родительский виджет, имеющий системный идентификатор, или 0, если у него нет родного родителя.

Эта функция была добавлена в Qt 4.4.

См. также effectiveWinId().

QWidget *QWidget::nextInFocusChain() const

Возвращает следующий виджет в цепочке фокуса этого виджета.

См. также previousInFocusChain().

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

Устанавливает флаги окна виджета в flags, не сообщая об этом системе окон.

Предупреждение: Не используйте эту функцию, если вы не знаете, что делаете.

См. также setWindowFlags().

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

Переопределено из QPaintDevice::paintEngine().

Возвращает движок отрисовки виджета.

Обратите внимание, что эта функция не должна вызываться пользователем напрямую, так как она предназначена только для переопределения. Функция вызывается Qt внутренне, и её стандартная реализация может не всегда возвращать корректный указатель.

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

Обработчик этого события может быть повторно реализован в подклассе для получения событий рисования, переданных в event.

Событие рисования — это запрос на перерисовку всего или части виджета. Оно может произойти по одной из следующих причин:

  • repaint() или update() были вызваны,
  • виджет был закрыт и теперь открыт, или
  • по многим другим причинам.

Многие виджеты могут просто перерисовать всю свою поверхность, когда их попросят, но некоторые медленные виджеты должны оптимизировать, рисуя только запрошенную область: 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(), RenderFlags renderFlags = RenderFlags( DrawWindowBackground | DrawChildren ))

Отображает 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(), RenderFlags renderFlags = RenderFlags( DrawWindowBackground | DrawChildren ))

Это перегруженная функция.

Отображает виджет в QPainter::device() художника painter.

Преобразования и настройки, применённые к 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 могут быть отрицательными.

После прокрутки виджеты получат события рисования для областей, которые необходимо перерисовать. Для виджетов, которые 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, виджет наследует роль фона от родителя.

Обратите внимание, что стили могут свободно выбирать любой цвет из палитры. Вы можете изменить палитру или установить стили sheet, если вы не достигаете желаемого результата с помощью 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().

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 для Embedded 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, для фактического управления фокусом. В этом случае виджет может установить линию редактирования в качестве своего прокси фокуса.

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);

Альтернативой вызову этой функции является передача этого виджета в конструктор макета.

Widget QWidget получит владение layout.

См. также layout() и Управление макетами.

void QWidget::setMask(const QBitmap &bitmap)

Приводит к тому, что видны только те пиксели виджета, для которых в bitmap соответствует бит 1. Если область включает пиксели за пределами rect() виджета, элементы управления системы окон в этой области могут быть или не быть видимыми в зависимости от платформы.

Обратите внимание, что этот эффект может быть медленным, если область особенно сложная.

Следующий код показывает, как изображение с альфа-каналом может быть использовано для генерации маски для виджета:

    QLabel topLevelLabel;
    QPixmap pixmap(":/images/tux.png");
    topLevelLabel.setPixmap(pixmap);
    topLevelLabel.setMask(pixmap.mask());

Метка, показанная этим кодом, маскируется с помощью содержащегося в ней изображения, что создаёт видимость прямого отображения неровно сформированного изображения на экране.

Виджеты с маской получают события мыши только в видимых частях.

См. также mask(), clearMask(), windowOpacity() и Пример часов с формой.

void QWidget::setMask(const QRegion &region)

Это перегруженная функция.

Приводит к тому, что видны только те части виджета, которые пересекаются с region. Если область включает пиксели за пределами rect() виджета, элементы управления системы окон в этой области могут быть или не быть видимыми в зависимости от платформы.

Обратите внимание, что этот эффект может быть медленным, если область особенно сложная.

См. также 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. В реальных приложениях следует избегать её использования и использовать один согласованный стиль графического интерфейса.

Предупреждение: В настоящее время стили CSS Qt не поддерживаются для пользовательских подклассов QStyle. Мы планируем решить эту проблему в будущих выпусках.

См. также style(), QStyle, QApplication::style() и QApplication::setStyle().

[static] void QWidget::setTabOrder(QWidget *first, QWidget *second)

Помещает виджет second после виджета first в порядке фокуса.

Обратите внимание, что поскольку порядок перехода по табу виджета second изменён, вы должны организовать цепочку таким образом:

setTabOrder(a, b); // a to b
setTabOrder(b, c); // a to b to c
setTabOrder(c, d); // a to b to c to d

а не так:

// WRONG
setTabOrder(c, d); // c to d
setTabOrder(a, b); // a to b AND c to d
setTabOrder(b, c); // a to b to c, but not c to d

Если first или second имеют прокси фокуса, setTabOrder() корректно заменяет прокси.

См. также 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.

Если окно не отображается (т. е. 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.

См. также Использование файла описания пользовательского интерфейса 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 должны быть вложенными элементами.

См. также raise() и lower().

QStyle *QWidget::style() const

См. также QWidget::setStyle(), QApplication::setStyle() и QApplication::style().

[virtual protected] void QWidget::tabletEvent(QTabletEvent *event)

Этот обработчик событий event может быть переопределён в подклассе для получения событий планшета для виджета.

Если вы переопределяете этот обработчик, очень важно отклонить событие, если вы не обрабатываете его, чтобы родительский виджет мог его интерпретировать.

По умолчанию событие игнорируется.

Если отслеживание планшета выключено, события перемещения планшета происходят только если стилус находится в контакте с планшетом, или нажата хотя бы одна кнопка стилуса, при перемещении стилуса. Если отслеживание планшета включено, события перемещения планшета происходят даже когда стилус находится вблизи планшета без нажатых кнопок.

См. также 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 может быть переопределен в подклассе для получения событий прокрутки для виджета.

Если вы переопределяете этот обработчик, очень важно отклонить событие, если вы не обрабатываете его, чтобы родительский виджет мог его интерпретировать.

По умолчанию событие игнорируется.

См. также 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

Возвращает текущее состояние окна. Состояние окна — это логическое ИЛИ комбинация состояний Qt::WindowState: Qt::WindowMinimized, Qt::WindowMaximized, Qt::WindowFullScreen и Qt::WindowActive.

См. также Qt::WindowState и setWindowState().

[signal] void QWidget::windowTitleChanged(const QString &title)

Этот сигнал излучается, когда заголовок окна изменился, со значением нового заголовка 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/qt-5.9/qwidget.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API