Spec-Zone.ru › Qt 5.14

Класс QWidget

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

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

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

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

Публичные типы

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

Свойства

  • acceptDrops : bool
  • описаниеДоступности : QString
  • имяДоступности : QString
  • автозаполнениеФоном : bool
  • размерБазы : QSize
  • прямоугольникПотомок : const QRect
  • областьПотомков : const QRegion
  • политикаКонтекстногоМеню : Qt::ContextMenuPolicy
  • курсор : QCursor
  • активирован : bool
  • фокус : const bool
  • политикаФокуса : Qt::FocusPolicy
  • шрифт : QFont
  • геометрияРамки : const QRect
  • размерРамки : const QSize
  • полныйЭкран : const bool
  • геометрия : QRect
  • высота : const int
  • подсказкиВвода : Qt::InputMethodHints
  • активноеОкно : const bool
  • направлениеРазметки : Qt::LayoutDirection
  • локаль : QLocale
  • максимизирован : const bool
  • максимальнаяВысота : int
  • максимальныйРазмер : QSize
  • максимальнаяШирина : int
  • минимизирован : const bool
  • минимальнаяВысота : int
  • минимальныйРазмер : QSize
  • минимальныйРекомендуемыйРазмер : const QSize
  • минимальнаяШирина : int
  • модальный : const bool
  • отслеживаниеМыши : bool
  • нормальнаяГеометрия : const QRect
  • палитра : QPalette
  • позиция : QPoint
  • прямоугольник : const QRect
  • размер : QSize
  • рекомендуемыйРазмер : const QSize
  • приращениеРазмера : QSize
  • политикаРазмеры : QSizePolicy
  • подсказкаСтатуса : QString
  • стильЛиста : QString
  • отслеживаниеПланшета : bool
  • подсказка : QString
  • продолжительностьПодсказки : int
  • обновленияВключены : bool
  • видимость : bool
  • справка : QString
  • ширина : const int
  • путьФайлаОкна : QString
  • флагиОкна : Qt::WindowFlags
  • иконкаОкна : QIcon
  • модальностьОкна : Qt::WindowModality
  • окноИзменено : bool
  • прозрачностьОкна : double
  • заголовокОкна : QString
  • x : const int
  • y : const int

Общедоступные функции

QWidget(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())
virtual ~QWidget()
bool приемПеретаскиваний() const
QString описаниеДляДоступности() const
QString имяДляДоступности() const
QList<QAction *> действия() const
void активироватьОкно()
void добавитьДействие(QAction *action)
void добавитьДействия(QList<QAction *> actions)
void настроитьРазмер()
bool автоЗаполнениеФона() const
QPalette::ColorRole рольФона() const
QBackingStore * буферПоддержки() const
QSize базовыйРазмер() const
QWidget * элементПоКоординатам(int x, int y) const
QWidget * элементПоКоординатам(const QPoint &p) const
QRect прямоугольникПотомков() const
QRegion областьПотомков() const
void снятьФокус()
void очиститьМаску()
QMargins отступыСодержимого() const
QRect прямоугольникСодержимого() const
Qt::ContextMenuPolicy политикаКонтекстногоМеню() const
QCursor курсор() const
WId эффективныйИдентификаторОкна() const
void убедитьсяВОтполированности() const
Qt::FocusPolicy политикаФокуса() const
QWidget * фокусЗаместитель() const
QWidget * фокусированныйЭлемент() const
const QFont & шрифт() const
QFontInfo информацияОШрифте() const
QFontMetrics метрикаШрифта() const
QPalette::ColorRole foregroundRole() const
QRect frameGeometry() const
QSize frameSize() const
const QRect & geometry() const
QPixmap grab(const QRect &rectangle = QRect(QPoint(0, 0), QSize(-1, -1)))
void grabGesture(Qt::GestureType gesture, Qt::GestureFlags flags = Qt::GestureFlags())
void grabKeyboard()
void grabMouse()
void grabMouse(const QCursor &cursor)
int grabShortcut(const QKeySequence &key, Qt::ShortcutContext context = Qt::WindowShortcut)
QGraphicsEffect * graphicsEffect() const
QGraphicsProxyWidget * graphicsProxyWidget() const
bool hasEditFocus() const
bool hasFocus() const
virtual bool hasHeightForWidth() const
bool hasMouseTracking() const
bool hasTabletTracking() const
int height() const
virtual int heightForWidth(int w) const
Qt::InputMethodHints inputMethodHints() const
virtual QVariant inputMethodQuery(Qt::InputMethodQuery query) const
void insertAction(QAction *before, QAction *action)
void insertActions(QAction *before, QList<QAction *> actions)
bool isActiveWindow() const
bool isAncestorOf(const QWidget *child) const
bool isEnabled() const
bool isEnabledTo(const QWidget *ancestor) const
bool isFullScreen() const
bool isHidden() const
bool isMaximized() const
bool isMinimized() const
bool isModal() const
bool isVisible() const
bool isVisibleTo(const QWidget *ancestor) const
bool isWindow() const
bool isWindowModified() const
QLayout * layout() const
Qt::LayoutDirection layoutDirection() const
QLocale locale() const
QPoint mapFrom(const QWidget *parent, const QPoint &pos) const
QPoint mapFromGlobal(const QPoint &pos) const
QPoint mapFromParent(const QPoint &pos) const
QPoint mapTo(const QWidget *parent, const QPoint &pos) const
QPoint mapToGlobal(const QPoint &pos) const
QPoint mapToParent(const QPoint &pos) const
QRegion mask() const
int maximumHeight() const
QSize maximumSize() const
int maximumWidth() const
int minimumHeight() const
QSize minimumSize() const
virtual QSize minimumSizeHint() const
int minimumWidth() const
void переместить(const QPoint &)
void переместить(int x, int y)
QWidget * nativeParentWidget() const
QWidget * nextInFocusChain() const
QRect normalGeometry() const
void overrideWindowFlags(Qt::WindowFlags flags)
const QPalette & palette() const
QWidget * parentWidget() const
QPoint position() const
QWidget * previousInFocusChain() const
QRect rect() const
void отпуститьКлавиатуру()
void отпуститьМышь()
void отпуститьСочетаниеКлавиш(int id)
void удалитьДействие(QAction *action)
void отобразить(QPaintDevice *target, const QPoint &targetOffset = QPoint(), const QRegion &sourceRegion = QRegion(), QWidget::RenderFlags renderFlags = RenderFlags(DrawWindowBackground | DrawChildren))
void отобразить(QPainter *painter, const QPoint &targetOffset = QPoint(), const QRegion &sourceRegion = QRegion(), QWidget::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
QScreen * экран() 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 * стиль() const
QString стильЛиста() const
bool тестироватьАтрибут(Qt::WidgetAttribute атрибут) const
QString подсказка() const
int продолжительностьПодсказки() const
bool подМышью() const
void отпуститьЖест(Qt::GestureType жест)
void убратьКурсор()
void убратьНаправлениеРазметки()
void убратьЛокаль()
void обновить(int x, int y, int w, int h)
void обновить(const QRect &прямоугольник)
void обновить(const QRegion &область)
void обновитьГеометрию()
bool обновленияВключены() const
QRegion видимаяОбласть() const
QString чтоЭто() const
int ширина() const
WId winId() const
QWidget * окно() const
QString путьФайлаОкна() const
Qt::WindowFlags флагиОкна() const
QWindow * дескрипторОкна() const
QIcon иконкаОкна() const
Qt::WindowModality модальностьОкна() const
qreal прозрачностьОкна() const
QString рольОкна() const
Qt::WindowStates состояниеОкна() const
QString заголовокОкна() const
Qt::WindowType типОкна() const
int x() const
int y() const

Реализованные публичные функции

виртуальный QPaintEngine * paintEngine() const override

Открытые слоты

bool закрыть()
void скрыть()
void опустить()
void поднять()
void перерисовать()
void отключить(bool disable)
void включить(bool)
void получитьФокус()
void скрыть(bool hidden)
void установитьСтиль(const QString &styleSheet)
виртуальный void установитьВидимость(bool visible)
void изменитьОкно(bool)
void установитьЗаголовокОкна(const QString &)
void показать()
void показатьНаВесьЭкран()
void показатьМаксимизированным()
void показатьМинимизированным()
void показатьНормально()
void обновить()

Сигналы

void запросКонтекстногоМеню(const QPoint &pos)
void изменилсяЗначокОкна(const QIcon &icon)
void изменилсяЗаголовокОкна(const QString &title)

Статические публичные члены

QWidget * создатьКонтейнерОкна(QWindow *window, QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())
QWidget * найти(WId id)
QWidget * захватывающийКлавиатуру()
QWidget * захватывающийМышь()
void установитьПорядокПереключения(QWidget *first, QWidget *second)

Защищенные функции

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

Переопределённые защищённые функции

виртуальный bool event(QEvent *event) override
виртуальный void initPainter(QPainter *painter) const override
виртуальный int metric(QPaintDevice::PaintDeviceMetric m) const override

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

void updateMicroFocus()

Макросы

QWIDGETSIZE_MAX

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

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

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

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

  1. QWidget *parent = nullptr — родитель нового виджета. Если это nullptr (по умолчанию), новый виджет будет окном. В противном случае он будет дочерним элементом 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() вызывается при двойном щелчке пользователя внутри виджета. Если пользователь дважды щелкает, виджет получает событие нажатия мыши, событие отпускания мыши, (событие щелчка мыши), второе нажатие мыши, это событие и, наконец, второе событие отпускания мыши. (Также могут быть получены некоторые события перемещения мыши, если мышь не удерживается неподвижно во время этой операции.) Невозможно отличить щелчок от двойного щелчка до появления второго щелчка. (Это одна из причин, по которой большинство книг по интерфейсам пользователя рекомендуют рассматривать двойной щелчок как расширение одиночного щелчка, а не как отдельное действие.)

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

  • 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, заголовокОкна, значокОкна, являетсяАктивнымОкном, активироватьОкно(), минимизирован, отобразитьМинимизированным(), максимизирован, отобразитьМаксимизированным(), полноэкранный, отобразитьНаПолномЭкране(), отобразитьОбычным().
Содержание окна update(), repaint(), scroll().
Геометрия pos, x(), y(), rect, size, width(), height(), переместить(), изменитьРазмер(), sizePolicy, размерПодсказки(), минимальныйРазмерПодсказки(), обновитьГеометрию(), макет(), рамкаГеометрии, геометрия, областьПодоконников, областьПодоконников, настроитьРазмер(), преобразоватьИзГлобального(), преобразоватьВГлобальное(), преобразоватьИзРодителя(), преобразоватьВРодителя(), максимальныйРазмер, минимальныйРазмер, приращениеРазмера, базовыйРазмер, зафиксироватьРазмер()
Режим видимый, isVisibleTo(), активный, isEnabledTo(), модальный, являетсяОкном(), отслеживаниеМыши, обновленияВключены, видимаяОбласть().
Внешний вид стиль(), установитьСтиль(), стильЛиста, курсор, шрифт, панельЦветов, рольФоновогоЭлемента(), установитьРольФоновогоЭлемента(), информацияОШрифте(), метрикаШрифта().
Функции фокуса клавиатуры фокус, политикаФокуса, установитьФокус(), очиститьФокус(), установитьПорядокПереходаКлавишейTab(), установитьЗаместительФокуса(), переключитьФокусНаСледующегоПотомка(), переключитьФокусНаПредыдущегоПотомка().
Захват мыши и клавиатуры захватитьМышь(), отпуститьМышь(), захватитьКлавиатуру(), отпуститьКлавиатуру(), захватчикМыши(), захватчикКлавиатуры().
Обработчики событий событие(), событиеНажатияМыши(), событиеОтпусканияМыши(), событиеДвойногоНажатияМыши(), событиеДвиженияМыши(), событиеНажатияКлавиши(), событиеОтпусканияКлавиши(), событиеВходаФокуса(), событиеВыходаФокуса(), событиеКолесаМыши(), событиеВхода(), событиеВыхода(), событиеРисования(), событиеПеремещения(), событиеИзмененияРазмеры(), событиеЗакрытия(), событиеВходаПеретаскивания(), событиеДвиженияПеретаскивания(), событиеВыходаПеретаскивания(), событиеОпускания(), событиеПотомка(), событиеОтображения(), событиеСкрытия(), пользовательскоеСобытие(). событиеИзменения(),
Функции системы 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() и убедитесь, что его фон нарисован не непрозрачными цветами в областях, которые вы хотите сделать частично прозрачными.

END_OF_DOCUMENT_MARKER

Примечания к платформе:

  • 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 — это typedef для QFlags<RenderFlag>. Он хранит логическое ИЛИ сочетание значений RenderFlag.

Документация свойств

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 Style Sheets. Когда виджет имеет стили с допустимым фоном или изображением границы, это свойство автоматически отключается.

По умолчанию это свойство равно 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.

Некоторые реализации оконных систем сбросят курсор, если он покинет виджет, даже если мышь захвачена. Если вы хотите задать курсор для всех виджетов, даже когда он находится за пределами окна, обратитесь к QGuiApplication::setOverrideCursor().

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

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

См. также QGuiApplication::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, если виджет принимает фокус с помощью табуляции, 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's font propagation is similar to its palette propagation.

The current style, which is used to render the content of all standard Qt widgets, is free to choose to use the widget font, or in some cases, to ignore it (partially, or completely). In particular, certain styles like GTK style, Mac style, and Windows Vista style, apply special modifications to the widget font to match the platform's native look and feel. Because of this, assigning properties to a widget's font is not guaranteed to change the appearance of the widget. Instead, you may choose to apply a styleSheet.

Примечание: If Qt Style Sheets are used on the same widget as setFont(), style sheets will take precedence if the settings conflict.

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

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

См. также fontInfo() and fontMetrics().

frameGeometry : const QRect

геометрия виджета относительно родительского виджета, включая рамку окна

См. документацию Геометрия окна для обзора проблем с геометрией окон.

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

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

QRect frameGeometry() const

См. также geometry(), x(), y(), and pos().

frameSize : const QSize

Это свойство содержит размер виджета, включая рамку окна

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

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

QSize frameSize() const

fullScreen : const bool

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

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

По умолчанию, это свойство равно false.

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

bool isFullScreen() const

См. также windowState(), minimized, and 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(), переместить(), изменить размер(), moveEvent(), resizeEvent(), minimumSize(), and maximumSize().

height : const int

Это свойство содержит высоту виджета, исключая рамку окна.

См. документацию Геометрия окна для обзора проблем с геометрией окон.

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

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

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

int height() const

См. также geometry, width и size.

inputMethodHints : Qt::InputMethodHints

Какие специфичные подсказки для методов ввода имеет виджет.

Это актуально только для виджетов ввода. Оно используется методом ввода для получения подсказок о том, как метод ввода должен работать. Например, если установлен флаг Qt::ImhFormattedNumbersOnly, метод ввода может изменить свои визуальные компоненты, чтобы отразить, что могут быть введены только цифры.

Предупреждение: Некоторые виджеты требуют определённых флагов для корректной работы. Чтобы установить флаг, используйте w->setInputMethodHints(w->inputMethodHints()|f) вместо w->setInputMethodHints(f).

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

Значение по умолчанию — Qt::ImhNone.

Это свойство было добавлено в Qt 4.6.

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

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

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

isActiveWindow : const bool

Это свойство показывает, является ли окно этого виджета активным окном.

Активное окно — это окно, содержащее виджет, у которого есть фокус клавиатуры (окно может по-прежнему иметь фокус, если у него нет виджетов или ни один из его виджетов не принимает фокус клавиатуры).

Когда всплывающие окна видны, это свойство равно true как для активного окна, так и для всплывающего.

По умолчанию это свойство равно false.

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

bool isActiveWindow() const

См. также activateWindow() и QApplication::activeWindow().

layoutDirection : Qt::LayoutDirection

Это свойство содержит направление выравнивания для этого виджета.

По умолчанию это свойство установлено в Qt::LeftToRight.

Когда направление выравнивания установлено для виджета, оно распространяется на дочерние виджеты, но не на дочерние окна, а также не на дочерние виджеты, для которых явно вызван setLayoutDirection(). Также, дочерние виджеты, добавленные после вызова setLayoutDirection() для родителя, не наследуют направление выравнивания родителя.

Этот метод больше не влияет на направление выравнивания текста с Qt 4.7.

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

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

См. также QApplication::layoutDirection.

locale : QLocale

Это свойство содержит локаль виджета.

Пока не установлена специальная локаль, это либо локаль родителя, либо (если этот виджет является виджетом верхнего уровня) — локаль по умолчанию.

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

Это свойство было добавлено в Qt 4.3.

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

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

См. также QLocale и QLocale::setDefault().

maximized : const bool

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

Это свойство актуально только для окон.

Примечание: Из-за ограничений некоторых систем окон, это свойство не всегда сообщает ожидаемые результаты (например, если пользователь на X11 максимализует окно через менеджер окон, Qt не может отличить это от любого другого изменения размера). Ожидается, что это улучшится по мере развития протоколов менеджеров окон.

По умолчанию, это свойство равно false.

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

bool isMaximized() const

См. также windowState(), showMaximized(), visible, show(), hide(), showNormal() и minimized.

maximumHeight : int

Это свойство содержит максимальную высоту виджета в пикселях.

Это свойство соответствует высоте, заданной свойством maximumSize.

По умолчанию, это свойство содержит значение 16777215.

Примечание: Определение макроса QWIDGETSIZE_MAX ограничивает максимальный размер виджетов.

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

int maximumHeight() const
void setMaximumHeight(int maxh)

См. также maximumSize и maximumWidth.

maximumSize : QSize

Это свойство содержит максимальный размер виджета в пикселях.

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

По умолчанию, это свойство содержит размер, в котором ширина и высота имеют значения 16777215.

Примечание: Определение макроса QWIDGETSIZE_MAX ограничивает максимальный размер виджетов.

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

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

См. также maximumWidth, maximumHeight, minimumSize и sizeIncrement.

maximumWidth : int

Это свойство содержит максимальную ширину виджета в пикселях.

Это свойство соответствует ширине, заданной свойством maximumSize.

По умолчанию, это свойство содержит значение 16777215.

Примечание: Определение макроса QWIDGETSIZE_MAX ограничивает максимальный размер виджетов.

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

int maximumWidth() const
void setMaximumWidth(int maxw)

См. также maximumSize и maximumHeight.

minimized : const bool

Это свойство определяет, свёрнут ли (минимизирован) этот виджет.

Это свойство актуально только для окон.

По умолчанию, это свойство равно false.

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

bool isMinimized() const

См. также showMinimized(), visible, show(), hide(), showNormal(), и maximized.

minimumHeight : int

Это свойство содержит минимальную высоту виджета в пикселях.

Это свойство соответствует высоте, хранимой в свойстве minimumSize.

По умолчанию это свойство имеет значение 0.

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

int minimumHeight() const
void setMinimumHeight(int minh)

См. также minimumSize и minimumWidth.

minimumSize : QSize

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

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

Минимальный размер, заданный этой функцией, переопределит минимальный размер, определенный QLayout. Для отмены минимального размера используйте значение QSize(0, 0).

По умолчанию это свойство содержит размер с нулевой шириной и высотой.

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

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

См. также minimumWidth, minimumHeight, maximumSize и sizeIncrement.

minimumSizeHint : const QSize

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

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

Реализация minimumSizeHint() по умолчанию возвращает недопустимый размер, если для этого виджета нет макета, и возвращает минимальный размер макета в противном случае. Большинство встроенных виджетов переопределяют minimumSizeHint().

QLayout никогда не изменит размер виджета до размера, меньшего, чем рекомендуемый минимальный размер, если не установлено minimumSize() или политика размера установлена в QSizePolicy::Ignore. Если minimumSize() установлено, рекомендуемый минимальный размер будет проигнорирован.

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

virtual QSize minimumSizeHint() const

См. также QSize::isValid(), resize(), setMinimumSize(), и sizePolicy().

minimumWidth : int

Это свойство содержит минимальную ширину виджета в пикселях.

Это свойство соответствует ширине, хранимой в свойстве minimumSize.

По умолчанию это свойство имеет значение 0.

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

int minimumWidth() const
void setMinimumWidth(int minw)

См. также minimumSize и minimumHeight.

modal : const bool

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

Это свойство имеет смысл только для окон. Модальный виджет предотвращает получение ввода виджетами в других окнах.

По умолчанию это свойство равно false.

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

bool isModal() const

См. также isWindow(), windowModality и QDialog.

mouseTracking : bool

Это свойство указывает, включено ли отслеживание мыши для виджета.

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

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

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

bool hasMouseTracking() const
void setMouseTracking(bool enable)

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

normalGeometry : const QRect

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

Для дочерних виджетов это свойство всегда содержит пустой прямоугольник.

По умолчанию это свойство содержит пустой прямоугольник.

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

QRect normalGeometry() const

См. также QWidget::windowState() и QWidget::geometry.

palette : QPalette

Это свойство содержит палитру виджета.

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

При присвоении новой палитры виджету, цветовые роли из этой палитры объединяются с палитрой по умолчанию виджета, образуя окончательную палитру виджета. Элемент палитры для роли фона виджета используется для заполнения фона виджета (см. QWidget::autoFillBackground), а роль переднего плана инициализирует перо QPainter.

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

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

Передача палитры QWidget аналогична передаче шрифтов.

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

Предупреждение: Не используйте эту функцию совместно с Qt Style Sheets. При использовании стилей CSS палитра виджета может настраиваться с помощью "color", "background-color", "selection-color", "selection-background-color" и "alternate-background-color".

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

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

См. также QGuiApplication::palette(), QWidget::font(), и Qt Style Sheets.

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)

См. также размер, минимальный размер и максимальный размер.

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

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

Вам почти никогда не придётся переопределять функцию 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()).

Примечание: В macOS значки окон представляют активный документ и не будут отображаться, если не задан путь к файлу с помощью setFilePath.

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

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

Сигнал уведомления:

void windowIconChanged(const QIcon &icon)

См. также windowTitle и setFilePath.

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 = nullptr, Qt::WindowFlags f = Qt::WindowFlags())

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

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

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

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

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

См. также windowFlags.

[slot] bool QWidget::close()

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

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

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

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

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

Этот сигнал генерируется, когда политика контекстного меню виджета (contextMenuPolicy) равна Qt::CustomContextMenu, и пользователь запросил контекстное меню на виджете. Позиция pos — это позиция события контекстного меню, которое получает виджет. Обычно это координаты в системе координат виджета. Исключение составляют QAbstractScrollArea и его подклассы, которые отображают событие контекстного меню в координатах viewport().

См. также mapToGlobal(), QMenu и contextMenuPolicy.

[slot] void QWidget::hide()

Скрывает виджет. Эта функция эквивалентна setVisible(false).

Примечание: Если вы работаете с QDialog или его подклассами и вызываете функцию show() после этой функции, диалог будет отображен в исходном положении.

См. также hideEvent(), isHidden(), show(), setVisible(), isVisible() и close().

[slot] void QWidget::lower()

Опускает виджет в конец стека виджетов родительского виджета.

После этого вызова виджет будет визуально находиться позади (и, следовательно, будет скрыт) любого перекрывающегося виджета-потомка.

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

[slot] void QWidget::raise()

Приподнимает этот виджет доверху стека виджетов родительского виджета.

После этого вызова виджет будет визуально находиться поверх любого перекрывающегося виджета-потомка.

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

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

[slot] void QWidget::repaint()

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

Рекомендуется использовать repaint() только если вам нужно немедленное перерисовывание, например, во время анимации. В почти всех случаях update() предпочтительнее, так как он позволяет Qt оптимизировать скорость и свести к минимуму мерцание.

Предупреждение: Если вы вызываете repaint() в функции, которая может быть вызвана из paintEvent(), может возникнуть бесконечная рекурсия. Функция update() никогда не вызывает рекурсию.

См. также update(), paintEvent() и setUpdatesEnabled().

[slot] void QWidget::setDisabled(bool disable)

Отключает события обработки ввода виджета, если disable равно true; в противном случае включает события ввода.

Дополнительную информацию см. в документации к enabled.

См. также isEnabledTo(), QKeyEvent, QMouseEvent и changeEvent().

[slot] void QWidget::setFocus()

Это перегруженный метод.

Передает фокус клавиатурного ввода данному виджету (или его прокси фокуса), если данный виджет или один из его родителей является активным окном.

[slot] void QWidget::setHidden(bool hidden)

Функция-удобство, эквивалентная setVisible(!hidden).

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

[slot] void QWidget::show()

Отображает виджет и его дочерние виджеты.

Это эквивалентно вызову showFullScreen(), showMaximized() или setVisible(true), в зависимости от поведения по умолчанию платформы для флагов окна.

См. также raise(), showEvent(), hide(), setVisible(), showMinimized(), showMaximized(), showNormal(), isVisible() и windowFlags().

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

[slot] void QWidget::update()

Обновляет виджет, если обновления не отключены и виджет не скрыт.

Эта функция не вызывает немедленное перерисовку; вместо этого она планирует событие отрисовки для обработки, когда Qt возвращается в главный цикл событий. Это позволяет Qt оптимизировать скорость и минимизировать мерцание по сравнению с вызовом repaint().

Вызов update() несколько раз обычно приводит к вызову только одного paintEvent().

Qt обычно очищает область виджета перед вызовом paintEvent(). Если атрибут виджета Qt::WA_OpaquePaintEvent установлен, виджет отвечает за отрисовку всех своих пикселей с непрозрачным цветом.

См. также repaint(), paintEvent(), setUpdatesEnabled(), и Пример аналоговых часов.

[protected slot] void QWidget::updateMicroFocus()

Обновляет микрофокус виджета.

[signal] void QWidget::windowIconChanged(const QIcon &icon)

Этот сигнал испускается, когда значок окна изменён, с новым icon в качестве аргумента.

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

Примечание: Сигнал-уведомление для свойства windowIcon.

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

Этот сигнал испускается, когда заголовок окна изменён, с новым title в качестве аргумента.

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

Примечание: Сигнал-уведомление для свойства windowTitle.

[virtual] QWidget::~QWidget()

Удаляет виджет.

Все дочерние элементы этого виджета удаляются в первую очередь. Приложение завершается, если этот виджет является основным виджетом.

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

Обработчик событий вызывается с заданным event, когда действия виджета изменяются.

См. также addAction(), insertAction(), removeAction(), actions(), и QActionEvent.

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

Возвращает (возможно, пустой) список действий этого виджета.

См. также contextMenuPolicy, insertAction(), и removeAction().

void QWidget::activateWindow()

Устанавливает верхний виджет, содержащий этот виджет, в качестве активного окна.

Активное окно — это видимое верхнее окно, имеющее фокус ввода с клавиатуры.

Эта функция выполняет ту же операцию, что и щелчок мышью по строке заголовка верхнего окна. В X11 результат зависит от менеджера окон. Если вы хотите гарантировать, что окно будет также расположено сверху, следует также вызвать raise(). Обратите внимание, что окно должно быть видимым, в противном случае activateWindow() не имеет эффекта.

В Windows, если вы вызываете это, когда приложение не является активным, оно не станет активным окном. Оно изменит цвет записи в панели задач, чтобы указать, что окно изменилось каким-то образом. Это связано с тем, что Microsoft не позволяет приложению прерывать текущую работу пользователя в другом приложении.

См. также isActiveWindow(), window(), show(), и QWindowsWindowFunctions::setWindowActivationBehavior().

void QWidget::addAction(QAction *action)

Добавляет действие action в список действий этого виджета.

Все QWidgets имеют список QActions, однако они могут быть представлены графически различными способами. По умолчанию список QAction (возвращаемый actions()) используется для создания контекстного QMenu.

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

Владение action не переходит к этому QWidget.

См. также removeAction(), insertAction(), actions(), и QMenu.

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

Добавляет действия actions в список действий этого виджета.

См. также removeAction(), QMenu, и addAction().

void QWidget::adjustSize()

Настраивает размер виджета для соответствия его содержимому.

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

Для окон также учитывается размер экрана. Если sizeHint() меньше (200, 100) и политика размера является расширяющей, окно будет иметь минимальный размер (200, 100). Максимальный размер окна составляет 2/3 ширины и высоты экрана.

См. также sizeHint() и childrenRect().

QPalette::ColorRole QWidget::backgroundRole() const

Возвращает роль фона виджета.

Роль фона определяет кисть из палитры виджета, которая используется для отрисовки фона.

Если явная роль фона не задана, виджет наследует роль фона своего родительского виджета.

См. также setBackgroundRole() и foregroundRole().

QBackingStore *QWidget::backingStore() const

Возвращает QBackingStore, в который будет отрисовываться этот виджет.

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

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

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

Изменённое состояние можно получить из переданного параметра event.

События изменения состояния включают: QEvent::ToolBarChange, QEvent::ActivationChange, QEvent::EnabledChange, QEvent::FontChange, QEvent::StyleChange, QEvent::PaletteChange, QEvent::WindowTitleChange, QEvent::IconTextChange, QEvent::ModifiedChange, QEvent::MouseTrackingChange, QEvent::ParentChange, QEvent::WindowStateChange, QEvent::LanguageChange, QEvent::LocaleChange, QEvent::LayoutDirectionChange, QEvent::ReadOnlyChange.

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

Возвращает видимый дочерний виджет по координатам (x, y) в системе координат виджета. Если по указанным координатам нет видимого дочернего виджета, функция возвращает nullptr.

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

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

Возвращает видимый дочерний виджет в точке p в собственной системе координат виджета.

void QWidget::clearFocus()

Убирает фокус клавиатурного ввода с виджета.

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

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

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

void QWidget::clearMask()

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

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

[virtual protected] 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.

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

QRect QWidget::contentsRect() const

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

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

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

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

Обработчик вызывается, когда политика контекстного меню виджета contextMenuPolicy равна Qt::DefaultContextMenu.

По умолчанию обработчик игнорирует событие контекстного меню. Дополнительные сведения см. в документации к QContextMenuEvent.

См. также event(), QContextMenuEvent и customContextMenuRequested().

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

Создаёт новое окно виджета.

Параметры window, initializeWindow и destroyOldWindow игнорируются в Qt 5. Используйте QWindow::fromWinId() для создания QWindow, оборачивающего внешнее окно, и передайте его в QWidget::createWindowContainer().

См. также createWindowContainer() и QWindow::fromWinId().

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

Создаёт QWidget, позволяющий встроить window в приложение на основе QWidget.

Контейнер окна создаётся как дочерний элемент parent и с флагами окна flags.

После того, как окно было встроено в контейнер, контейнер будет управлять геометрией и видимостью окна. Явные вызовы QWindow::setGeometry(), QWindow::show() или QWindow::hide() для встроенного окна не рекомендуются.

Контейнер перенимает владение window. Окно можно удалить из контейнера окна с помощью вызова QWindow::setParent().

Контейнер окна подключается как родное дочернее окно к верхнему окну, которое является его родителем. Если контейнер окна используется в качестве дочернего элемента QAbstractScrollArea или QMdiArea, он создаст родное окно для каждого виджета в цепочке родителей, чтобы обеспечить правильное расположение и обрезку в этом случае. Создание родного окна для контейнера окна также позволяет обеспечить правильное расположение и обрезку. Это необходимо сделать перед отображением контейнера окна. Приложения с большим количеством родных дочерних окон могут испытывать проблемы с производительностью.

У контейнера окна есть ряд известных ограничений:

  • Порядок расположения; Встроенное окно будет расположено поверх иерархии виджетов как непрозрачный прямоугольник. Порядок расположения нескольких перекрывающихся экземпляров контейнеров окон не определён.
  • Интеграция отрисовки; Контейнер окна не взаимодействует с QGraphicsProxyWidget, QWidget::render() или подобными функциями.
  • Обработка фокуса; Можно разрешить контейнеру окна иметь любую политику фокуса, и он перенаправит фокус на окно с помощью вызова QWindow::requestActivate(). Однако возвращение к обычной цепочке фокуса из экземпляра QWindow будет зависеть от реализации самого экземпляра QWindow. Например, при входе в окно на основе Qt Quick с помощью фокуса табуляции, вполне вероятно, что дальнейшие нажатия клавиш табуляции будут циклировать только внутри приложения QML. Также, действительно ли QWindow::requestActivate() предоставляет фокус окну, зависит от платформы.
  • Использование большого количества экземпляров контейнеров окон в приложении на основе QWidget может значительно ухудшить общую производительность приложения.

[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

Возвращает эффективное идентификатор окна системы ввода-вывода виджета, т.е. идентификатор окна родительского виджета в системе ввода-вывода.

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

Примечание: Рекомендуется не хранить это значение, поскольку оно может меняться во время выполнения.

Функция была введена в 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().

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

Переопределяет: QObject::event(QEvent *e).

Это основной обработчик событий; он обрабатывает событие 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 для фактического определения. Если виджета с этим идентификатором нет, возвращается nullptr.

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

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

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

По умолчанию реализация обновляет виджет (за исключением окон, не задающих focusPolicy()).

См. также focusOutEvent(), setFocusPolicy(), keyPressEvent(), keyReleaseEvent(), event() и QFocusEvent.

[protected] bool QWidget::focusNextChild()

Находит новый виджет, которому следует передать фокус клавиатуры, в соответствии с нажатием клавиши Tab, и возвращает true, если новый виджет найден, или false, если нет.

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

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

Находит новый виджет, которому следует передать фокус клавиатуры, в соответствии с нажатием клавиш Tab и Shift+Tab, и возвращает true, если новый виджет найден, или false, если нет.

Если next имеет значение true, эта функция выполняет поиск вперёд, если next имеет значение false, она выполняет поиск назад.

Иногда необходимо переопределить эту функцию. Например, веб-браузер может переопределить её, чтобы переместить "текущую активную ссылку" вперёд или назад, и вызвать focusNextPrevChild() только когда достигнет последней или первой ссылки на "странице".

Дочерние виджеты вызывают focusNextPrevChild() на своих родительских виджетах, но только окно, содержащее дочерние виджеты, решает, куда перенаправить фокус. Переопределяя эту функцию для объекта, вы получаете контроль над переходом фокуса для всех дочерних виджетов.

См. также focusNextChild() и focusPreviousChild().

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

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

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

По умолчанию реализация обновляет виджет (за исключением окон, не задающих focusPolicy()).

См. также focusInEvent(), setFocusPolicy(), keyPressEvent(), keyReleaseEvent(), event() и QFocusEvent.

[protected] bool QWidget::focusPreviousChild()

Находит новый виджет, которому следует передать фокус клавиатуры, соответствующий нажатию Shift+Tab, и возвращает true, если новый виджет найден, или false, если нет.

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

QWidget *QWidget::focusProxy() const

Возвращает прокси фокуса или nullptr, если прокси фокуса нет.

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

QWidget *QWidget::focusWidget() const

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

Это не то же самое, что QApplication::focusWidget(), которое возвращает виджет фокуса в текущем активном окне.

QFontInfo QWidget::fontInfo() const

Возвращает информацию о шрифте для текущего шрифта виджета. Эквивалентно QFontInfo(widget->font()).

См. также font(), fontMetrics() и setFont().

QFontMetrics QWidget::fontMetrics() const

Возвращает метрики шрифта для текущего шрифта виджета. Эквивалентно QFontMetrics(widget->font()).

См. также font(), fontInfo() и setFont().

QPalette::ColorRole QWidget::foregroundRole() const

Возвращает роль переднего плана.

Роль переднего плана определяет цвет из palette виджета, который используется для отрисовки переднего плана.

Если роль переднего плана не задана явно, функция возвращает роль, контрастирующую с ролью заднего плана.

См. также setForegroundRole() и backgroundRole().

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

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

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

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

Примечание: К этой функции можно обратиться через метаобъектную систему и из QML. См. Q_INVOKABLE.

См. также 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 отправляется всем виджетам, к которым оно относится, в неопределённом порядке, но со значением флага ``ambiguous'' (двусмысленный).

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

См. также releaseShortcut() и setShortcutEnabled().

QGraphicsEffect *QWidget::graphicsEffect() const

Функция graphicsEffect возвращает указатель на графический эффект виджета.

Если у виджета нет графического эффекта, возвращается nullptr.

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

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

QGraphicsProxyWidget *QWidget::graphicsProxyWidget() const

Возвращает прокси-виджет для соответствующего встроенного виджета в графическом представлении; в противном случае возвращается nullptr.

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

См. также QGraphicsProxyWidget::createProxyForChildWidget() и QGraphicsScene::addWidget().

bool QWidget::hasEditFocus() const

Возвращает true, если у этого виджета в данный момент фокус редактирования; в противном случае false.

Эта функция доступна только в Qt для Embedded Linux.

См. также setEditFocus() и QApplication::navigationMode().

[virtual] bool QWidget::hasHeightForWidth() const

Возвращает true, если предпочтительная высота виджета зависит от его ширины; в противном случае возвращает false.

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

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

Возвращает предпочтительную высоту для этого виджета, учитывая ширину w.

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

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

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

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

Примечание: Виджет получает спонтанные события показа и скрытия, когда его состояние сопоставления изменяется системой окон, например, спонтанное событие скрытия при сворачивании пользователем окна и спонтанное событие показа при восстановлении окна. После получения спонтанного события скрытия виджет всё ещё считается видимым в смысле isVisible().

См. также visible, event() и QHideEvent.

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

Инициализирует перо, фон и шрифт painter в соответствии с текущим виджетом. Эта функция вызывается автоматически при открытии рисовальщика на QWidget.

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

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

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

Стандартная реализация вызывает event->ignore(), что отклоняет событие метода ввода. Подробнее см. в документации QInputMethodEvent.

См. также event() и QInputMethodEvent.

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

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

query указывает, какое свойство запрашивается.

См. также inputMethodEvent(), QInputMethodEvent, QInputMethodQueryEvent и inputMethodHints.

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

Вставляет действие action в список действий этого виджета перед действием before. Действие добавляется в конец, если before равно nullptr или before не является допустимым действием для этого виджета.

В QWidget должно быть только одно действие каждого типа.

См. также removeAction(), addAction(), QMenu, contextMenuPolicy и actions().

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

Вставляет действия actions в список действий этого виджета перед действием before. Действия добавляются в конец, если before равно nullptr или 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.

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

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, если этот виджет станет видимым, если предок отображён; в противном случае возвращает false.

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

Эта функция по-прежнему вернёт 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()

Возвращает виджет, который в настоящее время захватывает вход с клавиатуры.

Если в данном приложении в настоящее время ни один виджет не захватывает клавиатуру, nullptr возвращается.

См. также grabMouse() и mouseGrabber().

QLayout *QWidget::layout() const

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

Менеджер компоновки устанавливает геометрию дочерних виджетов, которые были добавлены в компоновку.

См. также setLayout(), sizePolicy() и Управление компоновкой.

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

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

Событие выхода отправляется виджету, когда курсор мыши покидает виджет.

См. также enterEvent(), mouseMoveEvent() и event().

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

Преобразует координату виджета pos из системы координат parent в систему координат данного виджета. parent не должен быть nullptr и должен быть родителем вызываемого виджета.

См. также 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 не должен быть nullptr и должен быть родителем вызываемого виджета.

См. также mapFrom(), mapToParent(), mapToGlobal() и underMouse().

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

Преобразует координаты виджета pos в глобальные экранные координаты. Например, mapToGlobal(QPoint(0,0)) даст глобальные координаты левого верхнего пикселя виджета.

См. также mapFromGlobal(), mapTo() и mapToParent().

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

Преобразует координаты виджета pos в координаты родительского виджета.

То же, что и mapToGlobal(), если у виджета нет родителя.

См. также mapFromParent(), mapTo(), mapToGlobal() и underMouse().

QRegion QWidget::mask() const

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

См. также setMask(), clearMask(), QRegion::isEmpty(), и Пример часов с формой.

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

Переопределяет: QPaintDevice::metric(QPaintDevice::PaintDeviceMetric metric) const.

Внутренняя реализация виртуальной функции QPaintDevice::metric().

m — метрика для получения.

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

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

По умолчанию вызывается mousePressEvent().

Примечание: Виджет также получит события нажатия и отпускания мыши помимо события двойного щелчка. И если другой виджет, который перекрывает этот виджет, исчезает в ответ на события нажатия или отпускания, то этот виджет получит только событие двойного щелчка. Разработчик должен убедиться, что приложение корректно интерпретирует эти события.

См. также mousePressEvent(), mouseReleaseEvent(), mouseMoveEvent(), event(), и QMouseEvent.

[static] QWidget *QWidget::mouseGrabber()

Возвращает виджет, который в данный момент захватывает ввод мыши.

Если в этом приложении в данный момент ни один виджет не захватывает ввод мыши, возвращается nullptr.

См. также grabMouse() и keyboardGrabber().

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

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

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

QMouseEvent::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 и Пример Scribble.

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

Это перегруженный метод.

Это соответствует move(QPoint(x, y)).

Примечание: Метод-сеттер для свойства pos.

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

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

Старая позиция доступна через QMoveEvent::oldPos().

См. также resizeEvent(), event(), move() и QMoveEvent.

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

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

В вашем переопределении этой функции, если вы хотите остановить обработку события Qt, верните true и установите result. Параметр result имеет значение только в Windows. Если вы вернёте false, это событие родной платформы передаётся обратно Qt, которое преобразует событие в событие Qt и отправляет его виджету.

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

Примечание: Эта функция заменяет функции фильтрации событий x11Event(), winEvent() и macEvent() Qt 4.

Платформа Идентификатор типа события Тип сообщения Тип результата
Windows "windows_generic_MSG" MSG * LRESULT
macOS "NSEvent" NSEvent *
XCB "xcb_generic_event_t" xcb_generic_event_t *

См. также QAbstractNativeEventFilter.

QWidget *QWidget::nativeParentWidget() const

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

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

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

QWidget *QWidget::nextInFocusChain() const

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

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

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

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

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

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

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

Переопределяет: QPaintDevice::paintEngine() const.

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

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

Возвращает родительский виджет, или nullptr, если у него нет родительского виджета.

QWidget *QWidget::previousInFocusChain() const

Функция previousInFocusChain возвращает предыдущий виджет в цепочке фокуса этого виджета.

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

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

void QWidget::releaseKeyboard()

Освобождает захват клавиатуры.

См. также grabKeyboard(), grabMouse() и releaseMouse().

void QWidget::releaseMouse()

Освобождает захват мыши.

См. также grabMouse(), grabKeyboard() и releaseKeyboard().

void QWidget::releaseShortcut(int id)

Удаляет ярлык с заданным id из системы ярлыков Qt. Виджет больше не будет получать события QEvent::Shortcut для последовательности клавиш ярлыка (если у него нет других ярлыков с той же последовательностью клавиш).

Предупреждение: Вам обычно не нужно использовать эту функцию, так как система ярлыков Qt автоматически удаляет ярлыки при уничтожении их родительского виджета. Лучше использовать QAction или QShortcut для обработки ярлыков, так как они более удобны в использовании, чем эта функция низкого уровня. Обратите также внимание, что это дорогостоящая операция.

См. также grabShortcut() и setShortcutEnabled().

void QWidget::removeAction(QAction *action)

Удаляет действие action из списка действий этого виджета.

См. также insertAction(), actions() и insertAction().

void QWidget::render(QPaintDevice *target, const QPoint &targetOffset = QPoint(), const QRegion &sourceRegion = QRegion(), QWidget::RenderFlags renderFlags = 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(), QWidget::RenderFlags renderFlags = RenderFlags(DrawWindowBackground | DrawChildren))

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

Отображает виджет в QPainter::device() рисовальщика painter.

Применяемые к painter преобразования и настройки будут использованы при отрисовке.

Примечание: Рисовальщик painter должен быть активным. В macOS виджет будет отрисован в QPixmap, а затем нарисован рисовальщиком painter.

См. также QPainter::device().

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().

QScreen *QWidget::screen() const

Возвращает экран, на котором находится виджет.

Эта функция была представлена в Qt 5.14.

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

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, то виджет наследует роль фона своего родителя.

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

См. также backgroundRole() и foregroundRole().

void QWidget::setBaseSize(int basew, int baseh)

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

Это соответствует setBaseSize(QSize(basew, baseh)). Устанавливает базовый размер виджета в ширину basew и высоту baseh.

Примечание: Функция-сеттер для свойства baseSize.

void QWidget::setContentsMargins(int left, int top, int right, int bottom)

Устанавливает отступы вокруг содержимого виджета, имеющие размеры left, top, right и bottom. Отступы используются системой компоновки и могут использоваться подклассами для задания области для рисования (например, исключая рамку).

Изменение отступов вызовет resizeEvent().

См. также contentsRect() и contentsMargins().

void QWidget::setContentsMargins(const QMargins &margins)

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

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

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

Изменение отступов вызовет resizeEvent().

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

END_OF_DOCUMENT_MARKER

См. также contentsRect() и contentsMargins().

void QWidget::setEditFocus(bool enable)

Если enable имеет значение true, то этому виджету будет задан фокус редактирования, в этом случае Qt::Key_Up и Qt::Key_Down будут переданы виджету в обычном режиме; в противном случае, Qt::Key_Up и Qt::Key_Down используются для изменения фокуса.

Эта функция доступна только в Qt для Embedded Linux.

См. также hasEditFocus() и QApplication::navigationMode().

void QWidget::setFixedHeight(int h)

Устанавливает минимальную и максимальную высоту виджета в h, не изменяя ширину. Предоставляется для удобства.

См. также sizeHint(), minimumSize(), maximumSize() и setFixedSize().

void QWidget::setFixedSize(const QSize &s)

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

Это переопределит ограничения размера по умолчанию, установленные QLayout.

Чтобы удалить ограничения, установите размер в QWIDGETSIZE_MAX.

В качестве альтернативы, если вы хотите, чтобы виджет имел фиксированный размер, основанный на его содержимом, вы можете вызвать QLayout::setSizeConstraint(QLayout::SetFixedSize);

См. также maximumSize и minimumSize.

void QWidget::setFixedSize(int w, int h)

Это перегруженный метод.

Устанавливает ширину виджета в w и высоту в h.

void QWidget::setFixedWidth(int w)

Устанавливает минимальную и максимальную ширину виджета в w, не изменяя высоту. Предоставляется для удобства.

См. также sizeHint(), minimumSize(), maximumSize() и setFixedSize().

void QWidget::setFocus(Qt::FocusReason reason)

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

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

Примечание: Встраиваемых платформах, setFocus() не приведет к открытию панели ввода методом ввода. Если вы хотите, чтобы это произошло, вы должны отправить событие QEvent::RequestSoftwareInputPanel в виджет самостоятельно.

setFocus() дает фокус виджету независимо от его политики фокуса, но не очищает захват клавиатуры (см. grabKeyboard()).

Обратите внимание, что если виджет скрыт, он не получит фокус, пока не будет показан.

Предупреждение: Если вы вызываете setFocus() в функции, которая сама может быть вызвана из focusOutEvent() или focusInEvent(), у вас может возникнуть бесконечная рекурсия.

См. также hasFocus(), clearFocus(), focusInEvent(), focusOutEvent(), setFocusPolicy(), focusWidget(), QApplication::focusWidget(), grabKeyboard(), grabMouse(), Фокус клавиатуры в виджетах и QEvent::RequestSoftwareInputPanel.

void QWidget::setFocusProxy(QWidget *w)

Устанавливает прокси фокуса виджета на виджет w. Если w является nullptr, функция сбрасывает этот виджет, чтобы у него не было прокси фокуса.

Некоторые виджеты могут «иметь фокус», но создают дочерний виджет, например, QLineEdit, для фактического управления фокусом. В этом случае виджет может установить line edit в качестве своего прокси фокуса.

setFocusProxy() устанавливает виджет, который фактически получит фокус, когда его получит «этот виджет». Если существует прокси фокуса, setFocus() и hasFocus() работают с прокси фокуса.

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

void QWidget::setForegroundRole(QPalette::ColorRole role)

Устанавливает роль переднего плана виджета на role.

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

Если role имеет значение QPalette::NoRole, виджет использует роль переднего плана, которая контрастирует с ролью заднего плана.

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

См. также foregroundRole() и backgroundRole().

void QWidget::setGeometry(int x, int y, int w, int h)

Это перегруженный метод.

Это соответствует setGeometry(QRect(x, y, w, h)).

Примечание: Метод-сеттер для свойства geometry.

void QWidget::setGraphicsEffect(QGraphicsEffect *effect)

Функция setGraphicsEffect предназначена для установки графического эффекта виджета.

Устанавливает effect в качестве эффекта виджета. Если на этом виджете уже установлен эффект, QWidget удалит существующий эффект перед установкой нового effect.

Если effect установлен на другом виджете, setGraphicsEffect() удалит эффект с виджета и установит его на этот виджет.

QWidget принимает во владение effect.

Примечание: Эта функция применит эффект к самому себе и всем своим дочерним элементам.

Примечание: Графические эффекты не поддерживаются для виджетов на основе OpenGL, таких как QGLWidget, QOpenGLWidget и QQuickWidget.

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

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

void QWidget::setLayout(QLayout *layout)

Устанавливает менеджер макета для этого виджета на layout.

Если на этом виджете уже установлен менеджер макета, QWidget не позволит установить другой. Сначала необходимо удалить существующий менеджер макета (возвращаемый layout()), прежде чем вы сможете вызвать setLayout() с новым макетом.

Если layout является менеджером макета другого виджета, setLayout() переродирует макет и сделает его менеджером макета для этого виджета.

Пример:

    QVBoxLayout *layout = new QVBoxLayout;
    layout->addWidget(formWidget);
    setLayout(layout);

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

QWidget примет во владение layout.

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

void QWidget::setMask(const QBitmap &bitmap)

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

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

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

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

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

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

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

void QWidget::setMask(const QRegion &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) в новом родительском элементе.

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

Устанавливает стиль GUI виджета в style. Владение объектом стиля не передаётся.

Если стиль не установлен, виджет использует стиль приложения, QApplication::style() вместо.

Установка стиля виджета не влияет на существующие или будущие дочерние виджеты.

Предупреждение: Эта функция особенно полезна для демонстрационных целей, когда вы хотите продемонстрировать возможности стилизации Qt. Реальные приложения должны её избегать и использовать вместо этого один согласованный стиль GUI.

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

END_OF_DOCUMENT_MARKER

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

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

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

Это эффективно удаляет виджет second из его цепочки фокусировки и вставляет его после виджета first.

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

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

а не так:

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

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

Примечание: начиная с Qt 5.10: виджет, имеющий дочерний элемент в качестве прокси фокуса, понимается как составной виджет. При установке порядка табуляции между одним или двумя составными виджетами локальный порядок табуляции внутри каждого будет сохранён. Это означает, что если оба виджета являются составными виджетами, результирующий порядок табуляции будет от последнего дочернего элемента внутри first до первого дочернего элемента внутри second.

См. также setFocusPolicy(), setFocusProxy() и Фокус клавиатуры в виджетах.

void QWidget::setWindowFlag(Qt::WindowType flag, bool on = true)

Устанавливает флаг окна flag для данного виджета, если on равно true; в противном случае очищает флаг.

Эта функция была представлена в Qt 5.9.

См. также setWindowFlags(), windowFlags() и windowType().

void QWidget::setWindowRole(const QString &role)

Устанавливает роль окна на role. Это имеет смысл только для окон на X11.

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

void QWidget::setWindowState(Qt::WindowStates windowState)

Устанавливает состояние окна на windowState. Состояние окна — это комбинация OR'ed значений 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.

См. также Использование файла UI Designer в вашем приложении.

[virtual protected] void QWidget::showEvent(QShowEvent *event)

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

Непроизвольные события отображения отправляются виджетам непосредственно перед их отображением. Произвольные события отображения окон доставляются после.

Примечание: виджет получает произвольные события отображения и скрытия, когда его статус отображения изменяется системой окон, например, произвольное событие скрытия, когда пользователь сворачивает окно, и произвольное событие отображения, когда окно восстанавливается. После получения произвольного события скрытия виджет всё ещё считается видимым в смысле isVisible().

См. также visible, event() и QShowEvent.

void QWidget::stackUnder(QWidget *w)

Размещает виджет под w в стеке родительского виджета.

Для работы виджет и w должны быть братьями.

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

QStyle *QWidget::style() const

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

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

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

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

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

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

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

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

QRegion QWidget::visibleRegion() const

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

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

Функция repaint() вызывает эту функцию при необходимости, поэтому, как правило, вам не нужно её вызывать.

[virtual protected] void QWidget::wheelEvent(QWheelEvent *event)

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

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

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

См. также QEvent::ignore(), QEvent::accept(), event() и QWheelEvent.

WId QWidget::winId() const

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

Принципиально переносимый, но если вы его используете, вы, вероятно, собираетесь сделать что-то непереносимое. Будьте осторожны.

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

Это значение может измениться во время выполнения. Виджету будет отправлено событие типа QEvent::WinIdChange после изменения идентификатора системного окна.

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

QWidget *QWidget::window() const

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

Если виджет является окном, возвращается сам виджет.

Типичное использование — изменение заголовка окна:

aWidget->window()->setWindowTitle("New Window Title");

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

QWindow *QWidget::windowHandle() const

Если это родной виджет, возвращает связанное QWindow. В противном случае возвращает null.

К родным виджетам относятся виджеты верхнего уровня, QGLWidget и дочерние виджеты, на которых был вызван метод winId().

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

См. также winId() и screen().

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().

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.14/qwidget.html

Spec-Zone.ru

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