Spec-Zone.ru › Qt

Класс QWidget

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

Заголовок: #include <QWidget>
CMake: find_package(Qt6 COMPONENTS Widgets REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Наследуется от: QObject и QPaintDevice
Наследует:

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

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

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

Перечисление Флаг отрисовки { DrawWindowBackground, DrawChildren, IgnoreMask }
Флаги Флаги отрисовки

Свойства

  • 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 добавитьДействия(const 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 эффективныйWinId() 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, const QList<QAction *> &actions)
bool isActiveWindow() const
bool isAncestorOf(const QWidget *child) const
bool isEnabled() const
bool isEnabledTo(const QWidget *ancestor) const
bool isFullScreen() const
bool isHidden() const
bool isMaximized() const
bool isMinimized() const
bool isModal() const
bool isVisible() const
bool isVisibleTo(const QWidget *ancestor) const
bool isWindow() const
bool isWindowModified() const
QLayout * layout() const
Qt::LayoutDirection layoutDirection() const
QLocale locale() const
QPointF mapFrom(const QWidget *parent, const QPointF &pos) const
QPoint mapFrom(const QWidget *parent, const QPoint &pos) const
QPointF mapFromGlobal(const QPointF &pos) const
QPoint mapFromGlobal(const QPoint &pos) const
QPointF mapFromParent(const QPointF &pos) const
QPoint mapFromParent(const QPoint &pos) const
QPointF mapTo(const QWidget *parent, const QPointF &pos) const
QPoint mapTo(const QWidget *parent, const QPoint &pos) const
QPointF mapToGlobal(const QPointF &pos) const
QPoint mapToGlobal(const QPoint &pos) const
QPointF mapToParent(const QPointF &pos) const
QPoint mapToParent(const QPoint &pos) const
QRegion mask() const
int maximumHeight() const
QSize maximumSize() const
int maximumWidth() const
int minimumHeight() const
QSize minimumSize() const
virtual QSize minimumSizeHint() const
int minimumWidth() const
void переместить(const QPoint &)
void переместить(int x, int y)
QWidget * nativeParentWidget() const
QWidget * следующийЭлементФокуса() const
QRect нормальнаяГеометрия() const
void переопределитьФлагиОкна(Qt::WindowFlags flags)
const QPalette & палитра() const
QWidget * родительскийВиджет() const
QPoint позиция() const
QWidget * предыдущийЭлементФокуса() const
QRect прямоугольник() const
void отпуститьКлавиатуру()
void отпуститьМышь()
void отпуститьСочетаниеКлавиш(int id)
void удалитьДействие(QAction *action)
void отобразить(QPaintDevice *target, const QPoint &targetOffset = QPoint(), const QRegion &sourceRegion = QRegion(), 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 setBackgroundRole(QPalette::ColorRole role)
void setBaseSize(const QSize &)
void setBaseSize(int basew, int baseh)
void setContentsMargins(int left, int top, int right, int bottom)
void setContentsMargins(const QMargins &margins)
void setContextMenuPolicy(Qt::ContextMenuPolicy policy)
void setCursor(const QCursor &)
void setEditFocus(bool enable)
void setFixedHeight(int h)
void setFixedSize(const QSize &s)
void setFixedSize(int w, int h)
void setFixedWidth(int w)
void setFocus(Qt::FocusReason reason)
void setFocusPolicy(Qt::FocusPolicy policy)
void setFocusProxy(QWidget *w)
void setFont(const QFont &)
void setForegroundRole(QPalette::ColorRole role)
void setGeometry(const QRect &)
void setGeometry(int x, int y, int w, int h)
void setGraphicsEffect(QGraphicsEffect *effect)
void setInputMethodHints(Qt::InputMethodHints hints)
void setLayout(QLayout *layout)
void setLayoutDirection(Qt::LayoutDirection direction)
void setLocale(const QLocale &locale)
void setMask(const QBitmap &bitmap)
void setMask(const QRegion &region)
void setMaximumHeight(int maxh)
void setMaximumSize(const QSize &)
void setMaximumSize(int maxw, int maxh)
void setMaximumWidth(int maxw)
void УстановитьМинимальнуюВысоту(int minh)
void УстановитьМинимальныйРазмер(const QSize &)
void УстановитьМинимальныйРазмер(int minw, int minh)
void УстановитьМинимальнуюШирину(int minw)
void УстановитьОтслеживаниеМыши(bool enable)
void УстановитьПалитру(const QPalette &)
void УстановитьРодителя(QWidget *parent)
void УстановитьРодителя(QWidget *parent, Qt::WindowFlags f)
void УстановитьЭкран(QScreen *screen)
void УстановитьАвтоповторГорячейКлавиши(int id, bool enable = true)
void УстановитьВключенностьГорячейКлавиши(int id, bool enable = true)
void УстановитьПриращениеРазмера(const QSize &)
void УстановитьПриращениеРазмера(int w, int h)
void УстановитьПолитикуРазмеры(QSizePolicy)
void УстановитьПолитикуРазмеры(QSizePolicy::Policy horizontal, QSizePolicy::Policy vertical)
void УстановитьПодсказкуСостояния(const QString &)
void УстановитьСтиль(QStyle *style)
void УстановитьОтслеживаниеПланшета(bool enable)
void УстановитьПодсказку(const QString &)
void УстановитьПродолжительностьПодсказки(int msec)
void УстановитьВключенностьОбновлений(bool enable)
void УстановитьЧтоЭто(const QString &)
void УстановитьПутьФайлаОкна(const QString &filePath)
void УстановитьФлагОкна(Qt::WindowType flag, bool on = true)
void УстановитьФлагиОкна(Qt::WindowFlags type)
void УстановитьИконкуОкна(const QIcon &icon)
void УстановитьМодальностьОкна(Qt::WindowModality windowModality)
void УстановитьПрозрачностьОкна(qreal level)
void УстановитьРольОкна(const QString &role)
void setWindowState(Qt::WindowStates windowState)
void setupUi(QWidget *widget)
QSize size() const
virtual QSize sizeHint() const
QSize sizeIncrement() const
QSizePolicy sizePolicy() const
void stackUnder(QWidget *w)
QString statusTip() const
QStyle * style() const
QString styleSheet() const
bool testAttribute(Qt::WidgetAttribute attribute) const
QString toolTip() const
int toolTipDuration() const
bool underMouse() const
void ungrabGesture(Qt::GestureType gesture)
void unsetCursor()
void unsetLayoutDirection()
void unsetLocale()
void update(int x, int y, int w, int h)
void update(const QRect &rect)
void update(const QRegion &rgn)
void updateGeometry()
bool updatesEnabled() const
QRegion visibleRegion() const
QString whatsThis() const
int width() const
WId winId() const
QWidget * window() const
QString windowFilePath() const
Qt::WindowFlags windowFlags() const
QWindow * windowHandle() const
QIcon windowIcon() const
Qt::WindowModality windowModality() const
qreal windowOpacity() const
QString windowRole() const
Qt::WindowStates windowState() const
QString windowTitle() const
Qt::WindowType windowType() const
int x() const
int y() const

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

virtual QPaintEngine * paintEngine() const override

Публичные слоты

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

Сигналы

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

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

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

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

virtual void обработкаДействия(QActionEvent *event)
virtual void обработкаИзменения(QEvent *event)
virtual void обработкаЗакрытия(QCloseEvent *event)
virtual void обработкаКонтекстногоМеню(QContextMenuEvent *event)
void создать(WId window = 0, bool initializeWindow = true, bool destroyOldWindow = true)
void удалить(bool destroyWindow = true, bool destroySubWindows = true)
virtual void обработкаВводаПеретаскивания(QDragEnterEvent *event)
virtual void обработкаВыходаПеретаскивания(QDragLeaveEvent *event)
virtual void обработкаПеремещенияПеретаскивания(QDragMoveEvent *event)
virtual void обработкаОпускания(QDropEvent *event)
virtual void обработкаВхода(QEnterEvent *event)
virtual void обработкаВходаФокуса(QFocusEvent *event)
bool получитьСледующегоПотомкаСФокусом()
virtual bool получитьСледующегоПредыдущегоПотомкаСФокусом(bool next)
virtual void обработкаВыходаФокуса(QFocusEvent *event)
bool получитьПредыдущегоПотомкаСФокусом()
virtual void обработкаСкрытия(QHideEvent *event)
virtual void обработкаВводаМетода(QInputMethodEvent *event)
virtual void обработкаНажатияКлавиши(QKeyEvent *event)
virtual void обработкаОтпусканияКлавиши(QKeyEvent *event)
virtual void обработкаВыхода(QEvent *event)
virtual void обработкаДвойногоЩелканияМышью(QMouseEvent *event)
virtual void обработкаДвиженияМышью(QMouseEvent *event)
virtual void обработкаНажатияМышью(QMouseEvent *event)
virtual void обработкаОтпусканияМышью(QMouseEvent *event)
virtual void обработкаПеремещения(QMoveEvent *event)
virtual bool событиеЯдра(const QByteArray &eventType, void *message, qintptr *result)
virtual void обработкаОтрисовки(QPaintEvent *event)
virtual void обработкаИзмененияРазмера(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(Qt::InputMethodQuery query = Qt::ImQueryAll)

Макросы

QWIDGETSIZE_MAX

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

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

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

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

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

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

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

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

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

A parent widget containing various child widgets.

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

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

Композитные виджеты

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

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

Настраиваемые виджеты и рисование

Поскольку QWidget является подклассом QPaintDevice, подклассы могут использоваться для отображения пользовательского содержимого, которое формируется с помощью серии операций рисования с экземпляром класса QPainter. Этот подход отличается от подхода в стиле холста, используемого Графической системой просмотра, где элементы добавляются в сцену приложением и отрисовываются самой системой.

Каждый виджет выполняет все операции рисования внутри своей функции paintEvent(). Она вызывается всякий раз, когда виджет необходимо перерисовать, будь то в результате какого-либо внешнего изменения или по запросу приложения.

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

Рекомендации по размеру и политики размеров

При реализации нового виджета почти всегда полезно переопределить sizeHint() для задания разумного значения по умолчанию для размера виджета и установить правильную политику размера с помощью setSizePolicy().

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

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

Примечание: Размер виджетов верхнего уровня ограничен 2/3 высоты и ширины рабочего стола. Вы можете изменить размер виджета вручную, если этих границ недостаточно.

События

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

Если ваш виджет содержит только дочерние виджеты, вам, вероятно, не нужно реализовывать какие-либо обработчики событий. Если вы хотите обнаружить щелчок мыши в дочернем виджете, вызовите функцию underMouse() дочернего виджета внутри функции mousePressEvent() виджета.

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

Вам необходимо предоставить поведение и содержимое для ваших собственных виджетов, но вот краткий обзор событий, относящихся к QWidget, начиная с самых распространённых:

  • paintEvent() вызывается всякий раз, когда виджет необходимо перерисовать. Каждый виджет, отображающий пользовательское содержимое, должен реализовывать его. Рисование с помощью QPainter может осуществляться только в paintEvent() или функции, вызываемой из paintEvent().
  • resizeEvent() вызывается, когда виджет был изменён в размере.
  • mousePressEvent() вызывается при нажатии кнопки мыши, когда указатель мыши находится внутри виджета или когда виджет захватил мышь с помощью grabMouse(). Нажатие мыши без её отпускания фактически эквивалентно вызову grabMouse().
  • mouseReleaseEvent() вызывается при отпускании кнопки мыши. Виджет получает события отпускания мыши, когда он получил соответствующее событие нажатия мыши. Это означает, что если пользователь нажимает мышь внутри вашего виджета, затем перемещает мышь куда-то ещё, прежде чем отпустить кнопку мыши, ваш виджет получает событие отпускания. Существует одно исключение: если появляется всплывающее меню, пока удерживается кнопка мыши, это всплывающее меню немедленно захватывает события мыши.
  • mouseDoubleClickEvent() вызывается, когда пользователь дважды щелкает в виджете. Если пользователь дважды щелкает, виджет получает событие нажатия мыши, событие отпускания мыши, (событие щелчка мыши), второе нажатие мыши, это событие и, наконец, второе событие отпускания мыши. (Также могут быть получены некоторые события перемещения мыши, если мышь не удерживается неподвижно в ходе этой операции.) Невозможно отличить щелчок от двойного щелчка до момента появления второго щелчка. (Вот одна из причин, почему большинство книг по GUI рекомендуют рассматривать двойной щелчок как расширение одиночного щелчка, а не как вызов другого действия.)

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

  • keyPressEvent() вызывается всякий раз, когда нажимается клавиша, и снова, когда клавиша удерживается достаточно долго, чтобы произойти автоматическое повторение. Клавиши Tab и Shift+Tab передаются виджету только в том случае, если они не используются механизмами изменения фокуса. Чтобы принудительно обработать эти клавиши вашим виджетом, необходимо переопределить QWidget::event().
  • focusInEvent() вызывается, когда виджет получает фокус клавиатуры (предполагается, что вы вызвали setFocusPolicy()). Хорошо разработанные виджеты обозначают, что они владеют фокусом клавиатуры ясным, но незаметным способом.
  • focusOutEvent() вызывается, когда виджет теряет фокус клавиатуры.

Вам может потребоваться также переопределить некоторые менее распространённые обработчики событий:

  • mouseMoveEvent() вызывается всякий раз, когда курсор мыши перемещается при нажатой кнопке мыши. Это может быть полезно при выполнении операций перетаскивания. Если вы вызовете setMouseTracking(true), вы получите события перемещения мыши даже при отсутствии нажатых кнопок. (См. также руководство Перетаскивание.)
  • keyReleaseEvent() вызывается всякий раз, когда отпускается клавиша, а также при удерживании клавиши (если клавиша повторяется автоматически). В этом случае виджет получит пару событий отпуска и нажатия клавиши для каждого повторения. Клавиши Tab и Shift+Tab передаются виджету только в том случае, если они не используются механизмами изменения фокуса. Чтобы принудительно обработать эти клавиши вашим виджетом, необходимо переопределить QWidget::event().
  • wheelEvent() вызывается всякий раз, когда пользователь прокручивает колесо мыши, а виджет имеет фокус.
  • enterEvent() вызывается, когда курсор мыши входит в область экрана виджета. (Это не включает область экрана, принадлежащую любому из дочерних виджетов.)
  • leaveEvent() вызывается, когда курсор мыши выходит из области экрана виджета. Если курсор попадает в дочерний виджет, это не вызовет leaveEvent().
  • moveEvent() вызывается, когда виджет перемещен относительно его родителя.
  • closeEvent() вызывается, когда пользователь закрывает виджет (или когда вызывается close()).

В документации для QEvent::Type также описаны некоторые довольно необычные события. Для обработки этих событий необходимо непосредственно переопределить event().

Встроенная реализация event() обрабатывает Tab и Shift+Tab (для перемещения фокуса клавиатуры) и передает большинство других событий одному из более специализированных обработчиков выше.

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

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

Контекст Функции и свойства
Функции окна show(), hide(), raise(), lower(), close().
Окна верхнего уровня windowModified, заголовокОкна, иконкаОкна, являетсяАктивнымОкном, активироватьОкно(), минимизирован, отобразитьМинимизированным(), максимизирован, отобразитьМаксимизированным(), полноэкранный, отобразитьВПолномЭкране(), отобразитьОбычным().
Содержимое окна update(), repaint(), scroll().
Геометрия pos, x(), y(), rect, size, width(), height(), move(), resize(), sizePolicy, размерПодсказка(), минимальныйРазмерПодсказка(), updateGeometry(), layout(), frameGeometry, geometry, childrenRect, childrenRegion, adjustSize(), mapFromGlobal(), mapToGlobal(), mapFromParent(), mapToParent(), максимальныйРазмер, минимальныйРазмер, приращениеРазмера, базовыйРазмер, setFixedSize()
Режим видимый, isVisibleTo(), активный, isEnabledTo(), модальный, являетсяОкном(), отслеживаниеМыши, обновленияВключены, видимаяОбласть().
Вид и ощущения style(), setStyle(), styleSheet, курсор, шрифт, палитра, backgroundRole(), setBackgroundRole(), fontInfo(), fontMetrics().
Функции фокуса клавиатуры фокус, политикаФокуса, setFocus(), clearFocus(), setTabOrder(), setFocusProxy(), focusNextChild(), focusPreviousChild().
Захват мыши и клавиатуры grabMouse(), releaseMouse(), grabKeyboard(), releaseKeyboard(), mouseGrabber(), keyboardGrabber().
Обработчики событий event(), mousePressEvent(), mouseReleaseEvent(), mouseDoubleClickEvent(), mouseMoveEvent(), keyPressEvent(), keyReleaseEvent(), focusInEvent(), focusOutEvent(), wheelEvent(), enterEvent(), leaveEvent(), paintEvent(), moveEvent(), resizeEvent(), closeEvent(), dragEnterEvent(), dragMoveEvent(), dragLeaveEvent(), dropEvent(), childEvent(), showEvent(), hideEvent(), customEvent(). changeEvent(),
Функции системы parentWidget(), window(), setParent(), winId(), find(), metric().
Контекстное меню contextMenuPolicy, contextMenuEvent(), customContextMenuRequested(), actions()
Интерактивная справка setToolTip(), setWhatsThis()

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

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

Использование таблиц стилей виджетов описано более подробно в документе Qt Style Sheets.

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

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

Начиная с Qt 4.1, содержимое родительских виджетов по умолчанию распространяется на каждый из их дочерних элементов, если не установлен 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.
  • macOS: Для работы с полупрозрачностью виджету необходимо установить флаг окна 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.

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

Перечисление QWidget::RenderFlagflags QWidget::RenderFlags

Это перечисление описывает, как отобразить виджет при вызове QWidget::render().

Константа Значение Описание
QWidget::DrawWindowBackground 0x1 Если вы включите этот параметр, фон виджета будет отрисовываться в целевой объект, даже если autoFillBackground не установлен. По умолчанию этот параметр включён.
QWidget::DrawChildren 0x2 Если вы включите этот параметр, дочерние элементы виджета будут рекурсивно отрисованы в целевой объект. По умолчанию этот параметр включён.
QWidget::IgnoreMask 0x4 Если вы включите этот параметр, маска виджета QWidget::mask() будет игнорироваться при отрисовке в целевой объект. По умолчанию этот параметр выключен.

Тип RenderFlags — это typedef для QFlags<RenderFlag>. Он хранит логическое ИЛИ сочетание значений RenderFlag.

END_OF_DOCUMENT_MARKER

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

acceptDrops : bool

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

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

Если виджет является рабочим столом (windowType() == Qt::Desktop), это может не сработать, если другой приложение использует рабочий стол; вы можете вызвать acceptDrops(), чтобы проверить, происходит ли это.

Предупреждение: Не изменяйте это свойство в обработчике события перетаскивания и выброса.

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

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

bool acceptDrops() const
void setAcceptDrops(bool on)

См. также Перетаскивание и выброс.

accessibleDescription : QString

Это свойство содержит описание виджета, как его видят программы辅助技术.

Описание виджета для辅助 технологий должно указывать, что делает виджет. В то время как accessibleName должен быть коротким и лаконичным (например, Сохранить), описание должно давать больше контекста, например, Сохранить текущий документ.

Это свойство должно быть локализовано.

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

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

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

См. также QWidget::accessibleName и QAccessibleInterface::text().

accessibleName : QString

Это свойство содержит имя виджета, как его видят программы辅助技术.

Это основное имя, с помощью которого программы辅助технологий, такие как программы чтения с экрана, объявляют этот виджет. Для большинства виджетов установка этого свойства не требуется. Например, для QPushButton будет использоваться текст кнопки.

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

Это свойство должно быть локализовано.

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

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

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

См. также QWidget::accessibleDescription и QAccessibleInterface::text().

autoFillBackground : bool

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

Если включено, это свойство заставит Qt заполнить фон виджета перед вызовом события рисования. Используемый цвет определяется ролью цвета QPalette::Window из палитры виджета.

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

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

Предупреждение: Используйте это свойство с осторожностью в сочетании со Qt Style Sheets. Когда у виджета есть стиль с допустимым фоном или изображением границы, это свойство автоматически отключено.

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

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

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

[read-only] childrenRect : const QRect

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

Скрытые дочерние элементы исключаются.

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

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

QRect childrenRect() const

См. также childrenRegion() и geometry().

[read-only] childrenRegion : const QRegion

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

Скрытые дочерние элементы исключаются.

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

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

QRegion childrenRegion() const

См. также childrenRect(), geometry() и mask().

contextMenuPolicy : Qt::ContextMenuPolicy

определяет, как виджет отображает контекстное меню

Значение по умолчанию для этого свойства — Qt::DefaultContextMenu, что означает вызов обработчика contextMenuEvent(). Другие значения — Qt::NoContextMenu, Qt::PreventContextMenu, Qt::ActionsContextMenu и Qt::CustomContextMenu. При использовании Qt::CustomContextMenu генерируется сигнал customContextMenuRequested().

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

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

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

cursor : QCursor

Это свойство хранит форму курсора для данного виджета.

Курсор мыши примет эту форму, когда он окажется над этим виджетом. Список предопределенных объектов курсора представлен здесь.

Виджет-редактор может использовать курсор в виде символа «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().

[read-only] focus : const bool

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

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

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

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

bool hasFocus() const

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

focusPolicy : Qt::FocusPolicy

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

Политика — Qt::TabFocus, если виджет принимает фокус с помощью клавиши Tab, Qt::ClickFocus, если виджет принимает фокус щелчком, Qt::StrongFocus, если он принимает оба типа фокуса, и Qt::NoFocus (по умолчанию), если он вообще не принимает фокус.

Вы должны включить фокус клавиатуры для виджета, если он обрабатывает события клавиатуры. Это обычно делается из конструктора виджета. Например, конструктор QLineEdit вызывает setFocusPolicy(Qt::StrongFocus).

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

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

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

См. также focusInEvent(), focusOutEvent(), keyPressEvent(), keyReleaseEvent() и enabled.

font : QFont

Это свойство содержит шрифт, текущий для виджета.

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

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

Значение по умолчанию зависит от среды системы. QApplication сохраняет системный/тематический шрифт, который служит значением по умолчанию для всех виджетов. Также могут быть специальные шрифты по умолчанию для определённых типов виджетов. Вы также можете определить шрифты по умолчанию для виджетов, передав настраиваемый шрифт и имя виджета в QApplication::setFont(). Наконец, шрифт сопоставляется с базой данных шрифтов Qt для поиска наилучшего соответствия.

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

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

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

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

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

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

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

[read-only] frameGeometry : const QRect

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

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

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

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

QRect frameGeometry() const

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

[read-only] frameSize : const QSize

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

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

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

QSize frameSize() const

[read-only] fullScreen : const bool

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

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

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

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

bool isFullScreen() const

См. также windowState(), minimized и maximized.

geometry : QRect

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

При изменении геометрии виджет, если он виден, получает событие перемещения (moveEvent()) и/или событие изменения размера (resizeEvent()) немедленно. Если виджет в данный момент не виден, гарантируется, что он получит соответствующие события до своего отображения.

Компонент размера корректируется, если он выходит за пределы диапазона, определенного minimumSize() и maximumSize().

Предупреждение: Вызов setGeometry() внутри resizeEvent() или moveEvent() может привести к бесконечной рекурсии.

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

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

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

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

См. также frameGeometry(), rect(), move(), resize(), moveEvent(), resizeEvent(), minimumSize(), и maximumSize().

[read-only] 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::InputMethodHints inputMethodHints() const
void setInputMethodHints(Qt::InputMethodHints hints)

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

[read-only] isActiveWindow : const bool

Это свойство содержит информацию о том, является ли окно этого виджета активным окном.

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

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

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

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

bool isActiveWindow() const

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

layoutDirection : Qt::LayoutDirection

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

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

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

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

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

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

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

locale : QLocale

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

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

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

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

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

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

[read-only] maximized : const bool

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

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

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

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

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

bool isMaximized() const

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

maximumHeight : int

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

Это свойство соответствует высоте, хранящейся в свойстве maximumSize.

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

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

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

int maximumHeight() const
void setMaximumHeight(int maxh)

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

maximumSize : QSize

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

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

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

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

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

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

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

maximumWidth : int

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

Это свойство соответствует ширине, хранящейся в свойстве maximumSize.

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

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

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

int maximumWidth() const
void setMaximumWidth(int maxw)

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

[read-only] minimized : const bool

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

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

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

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

bool isMinimized() const

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

minimumHeight : int

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

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

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

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

int minimumHeight() const
void setMinimumHeight(int minh)

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

minimumSize : QSize

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

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

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

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

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

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

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

[read-only] minimumSizeHint : const QSize

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

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

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

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

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

virtual QSize minimumSizeHint() const

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

minimumWidth : int

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

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

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

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

int minimumWidth() const
void setMinimumWidth(int minw)

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

[read-only] modal : const bool

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

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

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

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

bool isModal() const

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

mouseTracking : bool

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

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

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

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

bool hasMouseTracking() const
void setMouseTracking(bool enable)

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

[read-only] normalGeometry : const QRect

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

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

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

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

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

QRect normalGeometry() const

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

palette : QPalette

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

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

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

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

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

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

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

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

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

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

См. также QGuiApplication::palette(), QWidget::font(), и таблицы стилей Qt.

pos : QPoint

Это свойство содержит положение виджета внутри его родительского виджета

Если виджет является окном, положение — это положение виджета на рабочем столе, включая его рамку.

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

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

Предупреждение: Вызов move() или setGeometry() внутри moveEvent() может привести к бесконечной рекурсии.

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

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

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

См. также frameGeometry, size, x() и y().

[read-only] rect : const QRect

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

Свойство rect равно QRect(0, 0, width(), height()).

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

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

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

QRect rect() const

См. также size.

size : QSize

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

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

Размер корректируется, если он выходит за пределы диапазона, определенного minimumSize() и maximumSize().

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

Предупреждение: Вызов resize() или setGeometry() внутри resizeEvent() может привести к бесконечной рекурсии.

Примечание: Установление размера в QSize(0, 0) приведет к тому, что виджет не будет отображаться на экране. Это также относится к окнам.

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

QSize размер() const
void изменитьРазмер(int w, int h)
void изменитьРазмер(const QSize &)

См. также положение, геометрия, минимальныйРазмер, максимальныйРазмер, resizeEvent() и adjustSize().

[read-only] рекомендуемыйРазмер : const QSize

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

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

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

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

virtual QSize рекомендуемыйРазмер() const

См. также QSize::isValid(), минимальныйРекомендуемыйРазмер(), политикаРазмеры, установитьМинимальныйРазмер() и обновитьГеометрию().

приращениеРазмеры : QSize

Это свойство хранит приращение размера виджета.

При изменении размера пользователем, размер будет изменяться с шагом sizeIncrement(). ширина() пикселей по горизонтали и sizeIncrement.высота() пикселей по вертикали, с базовыйРазмер() как основой. Предпочтительные размеры виджетов — целые неотрицательные числа i и j:

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

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

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

Предупреждение: Приращение размера не имеет эффекта в Windows и может быть проигнорировано диспетчером окон на X11.

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

QSize приращениеРазмеры() const
void установитьПриращениеРазмеры(const QSize &)
void установитьПриращениеРазмеры(int w, int h)

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

политикаРазмеры : QSizePolicy

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

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

Политика по умолчанию — Предпочтительная/Предпочтительная, что означает, что виджет может быть изменён в размерах, но предпочитает размер, возвращаемый рекомендуемыйРазмер(). Кнопочные виджеты устанавливают политику размеров, указывающую, что они могут растягиваться по горизонтали, но являются фиксированными по вертикали. То же самое относится к полям ввода (например, QLineEdit, QSpinBox или редактируемому QComboBox) и другим виджетам с горизонтальной ориентацией (например, QProgressBar). QToolButton обычно квадратные, поэтому они позволяют расти в обоих направлениях. Виджеты, которые поддерживают разные направления (например, QSlider, QScrollBar или QHeader) устанавливают растяжение только в соответствующем направлении. Виджеты, которые могут обеспечивать полосы прокрутки (обычно подклассы QScrollArea), как правило, указывают, что они могут использовать дополнительное пространство и могут обойтись без размера рекомендуемыйРазмер().

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

QSizePolicy политикаРазмеры() const
void установитьПолитикуРазмеры(QSizePolicy)
void установитьПолитикуРазмеры(QSizePolicy::Policy horizontal, QSizePolicy::Policy vertical)

См. также sizeHint(), QLayout, QSizePolicy и updateGeometry().

statusTip : QString

Это свойство содержит подсказку статуса виджета

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

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

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

См. также toolTip и whatsThis.

styleSheet : QString

Это свойство содержит таблицу стилей виджета

Таблица стилей содержит текстовое описание настроек стиля виджета, как описано в документе Qt Style Sheets.

Начиная с Qt 4.5, таблицы стилей Qt полностью поддерживают macOS.

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

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

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

См. также setStyle(), QApplication::styleSheet и Qt Style Sheets.

tabletTracking : bool

Это свойство определяет, включено ли отслеживание планшетов для виджета

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

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

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

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

bool hasTabletTracking() const
void setTabletTracking(bool enable)

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

toolTip : QString

Это свойство содержит всплывающую подсказку виджета

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

Если вы хотите управлять поведением всплывающей подсказки, вы можете перехватить функцию event() и перехватить событие QEvent::ToolTip (например, если вы хотите настроить область, для которой должна отображаться всплывающая подсказка).

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

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

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

См. также QToolTip, statusTip и whatsThis.

toolTipDuration : int

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

Устанавливает время отображения всплывающей подсказки в миллисекундах. Если значение равно -1 (по умолчанию), время вычисляется в зависимости от длины подсказки.

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

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

int toolTipDuration() const
void setToolTipDuration(int msec)

См. также toolTip.

updatesEnabled : bool

Это свойство определяет, включены ли обновления

Включённый виджет, обновляющий свои данные, получает события рисования и имеет системный фон; выключенный виджет — нет. Это также подразумевает, что вызов update() и repaint() не имеет эффекта, если обновления отключены.

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

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

Пример:

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

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

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

bool updatesEnabled() const
void setUpdatesEnabled(bool enable)

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

visible : bool

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

Вызов setVisible(true) или show() устанавливает виджет в видимое состояние, если все его родительские виджеты до окна видны. Если предковый виджет невидим, виджет не станет видимым, пока все его предки не будут показаны. Если его размер или положение изменились, Qt гарантирует, что виджет получает события перемещения и изменения размера непосредственно перед отображением. Если виджет еще не изменен в размере, Qt отрегулирует его размер до полезного значения по умолчанию с помощью adjustSize().

Вызов setVisible(false) или hide() скрывает виджет явно. Явно скрытый виджет никогда не станет видимым, даже если все его предки станут видимыми, пока вы не отобразите его.

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

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

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

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

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

См. также show(), hide(), isHidden(), isVisibleTo(), isMinimized(), showEvent(), и hideEvent().

whatsThis : QString

Это свойство содержит текст справки What's This для виджета.

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

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

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

См. также QWhatsThis, QWidget::toolTip и QWidget::statusTip.

[read-only] width : const int

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

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

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

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

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

int width() const

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

windowFilePath : QString

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

Это свойство имеет смысл только для окон. Оно связывает путь к файлу с окном. Если вы зададите путь к файлу, но не зададите заголовок окна, Qt установит заголовок окна в имя файла указанного пути, полученное с помощью QFileInfo::fileName().

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

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

Если путь к файлу не задан, это свойство содержит пустую строку.

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

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

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

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

windowFlags : Qt::WindowFlags

Флаги окна представляют собой комбинацию типа (например, Qt::Dialog) и нуля или более подсказок для оконной системы (например, Qt::FramelessWindowHint).

Если виджет имел тип Qt::Widget или Qt::SubWindow и становится окном (Qt::Window, Qt::Dialog и т.д.), он размещается в позиции (0, 0) на рабочем столе. Если виджет является окном и становится Qt::Widget или Qt::SubWindow, он размещается в позиции (0, 0) относительно своего родительского виджета.

Примечание: Эта функция вызывает setParent(), изменяя флаги окна, что приводит к скрытию виджета. Вы должны вызвать show(), чтобы снова сделать виджет видимым.

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

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

См. также windowType(), setWindowFlag() и Пример флагов окна.

windowIcon : QIcon

Это свойство содержит значок виджета.

Это свойство имеет смысл только для окон. Если значок не задан, windowIcon() возвращает значок приложения (QApplication::windowIcon()).

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

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

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

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

void windowIconChanged(const QIcon &icon)

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

windowModality : Qt::WindowModality

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

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

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

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

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

См. также isWindow(), QWidget::modal и QDialog.

windowModified : bool

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

Изменённое окно — это окно, содержимое которого было изменено, но не сохранено на диск. Этот флаг будет иметь разные эффекты в зависимости от платформы. В macOS кнопка закрытия будет иметь изменённый вид; на других платформах в заголовке окна будет отображаться «*» (звёздочка).

Заголовок окна должен содержать заполнитель "[*]", указывающий, где должна отображаться «*». Обычно он должен отображаться сразу после имени файла (например, «document1.txt[*] — Текстовый редактор»). Если окно не модифицировано, заполнитель просто удаляется.

Обратите внимание, что если виджет установлен в состояние модифицированности, все его предки также будут установлены в состояние модифицированности. Однако, если вы вызовете setWindowModified(false) на виджете, это не будет распространяться на его родителя, так как другие дочерние элементы родителя могут быть изменены.

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

bool isWindowModified() const
void setWindowModified(bool)

См. также windowTitle, Qt Widgets — Пример приложения, Пример SDI и Пример MDI.

windowOpacity : double

Это свойство содержит уровень непрозрачности окна.

Допустимый диапазон непрозрачности от 1,0 (полностью непрозрачно) до 0,0 (полностью прозрачно).

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

Эта функция доступна на платформах Embedded Linux, macOS, Windows и X11, которые поддерживают расширение Composite.

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

Предупреждение: Изменение этого свойства с непрозрачного на прозрачный может вызвать событие рисования, которое нужно обработать, прежде чем окно отобразится корректно. Это преимущественно влияет на использование QScreen::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.

[read-only] x : const int

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

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

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

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

int x() const

См. также frameGeometry, y и pos.

[read-only] y : const int

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

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

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

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

int y() const

См. также frameGeometry, x и pos.

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

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

Сигнал QGuiApplication::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() или close().

Примечание: Полноэкранный режим работает нормально под Windows, но имеет определённые проблемы под X. Эти проблемы связаны с ограничениями протокола ICCCM, который определяет взаимодействие между клиентами X11 и диспетчером окон. ICCCM просто не понимает концепции окон в полноэкранном режиме без декораций. Поэтому лучше всего запросить окно без рамки и разместить его так, чтобы оно занимало весь экран. В зависимости от диспетчера окон это может или не может сработать. Окно без рамки запрашивается с помощью подсказок MOTIF, которые поддерживаются практически всеми современными диспетчерами окон.

Альтернативой было бы полностью обойти диспетчер окон и создать окно с флагом Qt::X11BypassWindowManagerHint. Однако это приводит к другим серьёзным проблемам, таким как полная поломка фокуса клавиатуры и очень странные эффекты при изменениях рабочего стола или при поднятии других окон.

Диспетчеры окон X11, которые следуют современным спецификациям после ICCCM, правильно поддерживают полноэкранный режим.

При показе окна во весь экран на macOS всё приложение переходит в полноэкранный режим, получая выделенный рабочий стол. При запуске приложения в полноэкранном режиме показ другого окна может автоматически перевести это окно в полноэкранный режим. Чтобы этого избежать, выйдите из полноэкранного режима, вызвав showNormal() или close() для полноэкранного окна перед показом другого окна.

См. также showNormal(), showMaximized(), show(), isVisible() и close().

[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(Qt::InputMethodQuery query = Qt::ImQueryAll)

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

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

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

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

Функция была введена в Qt 5.2.

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

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

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

Функция была введена в Qt 5.2.

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

void QWidget::addAction(QAction *action)

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

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

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

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

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

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

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

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

void QWidget::adjustSize()

Настраивает размер виджета, чтобы он соответствовал его содержимому.

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

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

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

QPalette::ColorRole QWidget::backgroundRole() const

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

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

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

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

QBackingStore *QWidget::backingStore() const

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

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

void QWidget::changeEvent(QEvent *event)

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

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

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

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

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

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

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

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

void QWidget::clearFocus()

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

Если у виджета был активный фокус, в этот виджет отправляется событие focus out event, сигнализирующее о потере фокуса.

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

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

void QWidget::clearMask()

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

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

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

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

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

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

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

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

QMargins QWidget::contentsMargins() const

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

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

QRect QWidget::contentsRect() const

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Порядок стеков; Встроенное окно будет расположено поверх иерархии виджетов как непрозрачный прямоугольник. Порядок стеков нескольких перекрывающихся экземпляров контейнера окон не определён.
  • Интеграция рендеринга; Контейнер окна не взаимодействует с 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 окна первого нативного родительского виджета, т.е. виджета верхнего уровня, содержащего этот виджет.

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

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

void QWidget::ensurePolished() const

Обеспечивает, что виджет и его дочерние элементы отполированы с помощью QStyle (т.е., имеют правильный шрифт и палитру).

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

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

Если вам нужно изменить некоторые настройки при полировке виджета, переопределите event() и обработайте тип события QEvent::Polish.

Примечание: Функция объявлена как const, чтобы ее можно было вызывать из других константных функций (например, sizeHint()).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Примечание: Эту функцию можно вызвать через систему метаобъектов и из QML. См. Q_INVOKABLE.

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

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

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

Подписывает виджет на определенный gesture со специфическими flags.

См. также ungrabGesture() и QGestureEvent.

void QWidget::grabKeyboard()

Захватывает ввод с клавиатуры.

Данный виджет получает все события клавиатуры до тех пор, пока не будет вызван releaseKeyboard(); другие виджеты не получают событий клавиатуры. События мыши не затрагиваются. Используйте grabMouse(), если хотите захватить и их.

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

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

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

void QWidget::grabMouse()

Захватывает ввод с мыши.

Данный виджет получает все события мыши до тех пор, пока не будет вызван releaseMouse(); другие виджеты не получают событий мыши. События клавиатуры не затрагиваются. Используйте grabKeyboard(), если хотите захватить и их.

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

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

Примечание: Только видимые виджеты могут захватывать ввод с мыши. Если isVisible() возвращает false для виджета, этот виджет не может вызвать grabMouse().

Примечание: В Windows, grabMouse() работает только когда мышь находится внутри окна, принадлежащего процессу. В macOS, grabMouse() работает только когда мышь находится внутри рамки этого виджета.

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

void QWidget::grabMouse(const QCursor &cursor)

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

Захватывает входные данные мыши и изменяет форму курсора.

Курсор примет форму cursor (пока захвачен фокус мыши), и этот виджет будет единственным, который будет получать события мыши, пока не будет вызван releaseMouse().

Предупреждение: Захват мыши может заблокировать терминал.

Примечание: См. примечание в QWidget::grabMouse().

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

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

Добавляет ярлык в систему ярлыков Qt, который отслеживает заданную последовательность key в заданном context. Если context равен Qt::ApplicationShortcut, ярлык применяется ко всему приложению. В противном случае он локален для этого виджета (Qt::WidgetShortcut) или для самого окна (Qt::WindowShortcut).

Если ту же последовательность key захватили несколько виджетов, при её возникновении событие QEvent::Shortcut отправляется всем виджетам, к которым оно относится, в неопределённом порядке, но с установленным флагом «неопределённое».

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

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

QGraphicsEffect *QWidget::graphicsEffect() const

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

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

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

QGraphicsProxyWidget *QWidget::graphicsProxyWidget() const

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

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

bool QWidget::hasEditFocus() const

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

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

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

[virtual, since 5.0] 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 так же, как для данного виджета. Эта функция вызывается автоматически при открытии объекта 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, const 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.

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

isEnabledTo(0) возвращает false, если этот виджет или любой из его предков был явно отключен.

Здесь термин «предок» означает родительский виджет в том же окне.

Следовательно, isEnabledTo(0) останавливается на окне этого виджета, в отличие от isEnabled(), которая также учитывает родительские окна.

См. также setEnabled() и enabled.

bool QWidget::isHidden() const

Возвращает true, если виджет скрыт, иначе возвращает false.

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

Для проверки видимости используйте !isVisible() (обратите внимание на знак восклицания).

isHidden() подразумевает !isVisible(), но виджет может быть невидимым и не скрытым одновременно. Это происходит для виджетов, являющихся потомками невидимых виджетов.

Виджеты скрыты, если:

  • они были созданы как независимые окна,
  • они были созданы как потомки видимых виджетов,
  • был вызван hide() или setVisible(false).

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

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

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

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

isVisibleTo(0) идентично isVisible().

См. также show(), hide() и isVisible().

bool QWidget::isWindow() const

Возвращает true, если виджет является независимым окном, иначе возвращает false.

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

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

Виджеты QDialog и QMainWindow по умолчанию являются окнами, даже если родительский виджет указан в конструкторе. Это поведение определяется флагом Qt::Window.

См. также window(), isModal() и parentWidget().

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

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

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

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

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

Обратите внимание, что QKeyEvent начинается с isAccepted() == true, поэтому вам не нужно вызывать QKeyEvent::accept() — просто не вызывайте реализацию базового класса, если вы обрабатываете клавишу.

См. также keyReleaseEvent(), setFocusPolicy(), focusInEvent(), focusOutEvent(), event(), QKeyEvent и Пример Tetrix.

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

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

Виджет должен получить фокус изначально и иметь фокус, чтобы получить событие отпускания клавиши.

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

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

Обратите внимание, что QKeyEvent начинается с isAccepted() == true, поэтому вам не нужно вызывать QKeyEvent::accept() — просто не вызывайте реализацию базового класса, если вы обрабатываете клавишу.

См. также keyPressEvent(), QEvent::ignore(), setFocusPolicy(), focusInEvent(), focusOutEvent(), event() и QKeyEvent.

[static] QWidget *QWidget::keyboardGrabber()

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

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

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

QLayout *QWidget::layout() const

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

QRegion QWidget::mask() const

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

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

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

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

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

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

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

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

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

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

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

[static] QWidget *QWidget::mouseGrabber()

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

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

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

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

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

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

QMouseEvent::pos() сообщает о позиции курсора мыши, относительно этого виджета. Для событий нажатия и отпускания, позиция обычно совпадает с позицией последнего события перемещения мыши, но она может отличаться, если рука пользователя дрожит. Это функция подлежащей операционной системы, а не Qt.

Если вы хотите отобразить всплывающую подсказку немедленно, во время перемещения мыши (например, для получения координат мыши с помощью QMouseEvent::pos() и отображения их как всплывающей подсказки), вы должны сначала включить отслеживание мыши, как описано выше. Затем, чтобы гарантировать, что подсказка обновляется немедленно, вы должны вызвать QToolTip::showText() вместо setToolTip() в вашей реализации mouseMoveEvent().

См. также setMouseTracking(), mousePressEvent(), mouseReleaseEvent(), mouseDoubleClickEvent(), event(), QMouseEvent и Пример Scribble.

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

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

Если вы создаёте новые виджеты в mousePressEvent(), то mouseReleaseEvent() может не сработать так, как ожидается, в зависимости от базовой системы окон (или менеджера окон X11), расположения виджетов и других факторов.

По умолчанию реализация выполняет закрытие всплывающих виджетов при щелчке вне окна. Для других типов виджетов она ничего не делает.

См. также mouseReleaseEvent(), mouseDoubleClickEvent(), mouseMoveEvent(), event(), QMouseEvent и Пример Scribble.

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

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

См. также mousePressEvent(), mouseDoubleClickEvent(), mouseMoveEvent(), event(), QMouseEvent и Пример Scribble.

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

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

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

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

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

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

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

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

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

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

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

QWidget *QWidget::nextInFocusChain() const

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

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

END_OF_DOCUMENT_MARKER

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 возвращает предыдущий виджет в цепочке фокуса этого виджета.

См. также 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() вместо этого.

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.

void QWidget::resizeEvent(QResizeEvent *event)

Обработчик этого события может быть переопределен в подклассе для получения событий изменения размера виджета, которые передаются в параметре event. Когда вызывается resizeEvent(), у виджета уже есть его новая геометрия. Предыдущий размер доступен через QResizeEvent::oldSize().

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

См. также moveEvent(), event(), resize(), QResizeEvent, paintEvent(), и Пример Scribble.

bool QWidget::restoreGeometry(const QByteArray &geometry)

Восстанавливает геометрию и состояние виджетов верхнего уровня, сохранённых в массиве байтов geometry. Возвращает true при успехе; в противном случае возвращает false.

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

Для восстановления геометрии, сохранённой с помощью QSettings, можно использовать такой код:

QSettings settings("MyCompany", "MyApp");
myWidget->restoreGeometry(settings.value("myWidget/geometry").toByteArray());

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

Используйте QMainWindow::restoreState() для восстановления геометрии и состояния панелей инструментов и плавающих виджетов.

См. также saveGeometry(), QSettings, QMainWindow::saveState(), и QMainWindow::restoreState().

QByteArray QWidget::saveGeometry() const

Сохраняет текущую геометрию и состояние виджетов верхнего уровня.

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

void MyWidget::closeEvent(QCloseEvent *event)
{
    QSettings settings("MyCompany", "MyApp");
    settings.setValue("geometry", saveGeometry());
    QWidget::closeEvent(event);
}

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

Используйте QMainWindow::saveState() для сохранения геометрии и состояния панелей инструментов и плавающих виджетов.

См. также restoreGeometry(), QMainWindow::saveState(), и QMainWindow::restoreState().

[since 5.14] QScreen *QWidget::screen() const

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

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

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

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

END_OF_DOCUMENT_MARKER

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

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

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

void QWidget::setFocusProxy(QWidget *w)

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

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

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

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

См. также 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) в новом родительском виджете.

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

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

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

Примечание: Виджет становится невидимым при изменении родителя, даже если он был ранее видимым. Вам необходимо вызвать show(), чтобы сделать виджет видимым снова.

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

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

void QWidget::setParent(QWidget *parent, Qt::WindowFlags f)

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

Эта функция также принимает флаги виджета, f, в качестве аргумента.

void QWidget::setScreen(QScreen *screen)

Устанавливает экран, на котором должен отображаться виджет, на screen.

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

Примечание: Если экран является частью виртуального рабочего стола с несколькими экранами, окно не переместится автоматически на screen. Чтобы разместить окно относительно экрана, используйте свойство topLeft() экрана.

См. также screen() и QWindow::setScreen().

void QWidget::setShortcutAutoRepeat(int id, bool enable = true)

Если enable имеет значение true, автоматическое повторение сочетания клавиш с заданным id включено; в противном случае оно отключено.

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

void QWidget::setShortcutEnabled(int id, bool enable = true)

Если enable имеет значение true, сочетание клавиш с заданным id включено; в противном случае сочетание клавиш отключено.

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

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

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

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

Устанавливает приращение размера по оси x (ширина) в w и приращение размера по оси y (высота) в h.

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

void QWidget::setSizePolicy(QSizePolicy::Policy horizontal, QSizePolicy::Policy vertical)

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

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

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

См. также QSizePolicy::QSizePolicy().

void QWidget::setStyle(QStyle *style)

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

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

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

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

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

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

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

Располагает виджет 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(), и Фокус клавиатуры в виджетах.

[since 5.9] void QWidget::setWindowFlag(Qt::WindowType flag, bool on = true)

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

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

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

void QWidget::setWindowRole(const QString &role)

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

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

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

Устанавливает состояние окна на windowState. Состояние окна — это результат побитового ИЛИ (Qt::WindowMinimized, Qt::WindowMaximized, Qt::WindowFullScreen и Qt::WindowActive).

Если окно невидимо (т.е. isVisible() возвращает false), состояние окна вступит в силу при вызове show(). Для видимых окон изменение происходит немедленно. Например, чтобы переключаться между полноэкранным и обычным режимом, используйте следующий код:

w->setWindowState(w->windowState() ^ Qt::WindowFullScreen);

Для восстановления и активации минимизированного окна (сохраняя его максимальное и/или полноэкранное состояние), используйте следующее:

w->setWindowState((w->windowState() & ~Qt::WindowMinimized) | Qt::WindowActive);

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

Примечание: На некоторых системах окон Qt::WindowActive не является мгновенным и может быть проигнорирован в определенных случаях.

Когда состояние окна меняется, виджет получает changeEvent() типа QEvent::WindowStateChange.

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

void QWidget::setupUi(QWidget *widget)

Настраивает пользовательский интерфейс для указанного widget.

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

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

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

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

[since 5.0] 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-6.2/qwidget.html

Spec-Zone.ru

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