Spec-Zone.ru › Qt 5.12

Класс QWidget

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

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

QAbstractButton, QAbstractSlider, QAbstractSpinBox, QCalendarWidget, QComboBox, QDesktopWidget, QDialog, QDialogButtonBox, QDockWidget, QFocusFrame, QFrame, QGroupBox, QKeySequenceEdit, QLineEdit, QMainWindow, QMdiSubWindow, QMenu, QMenuBar, QOpenGLWidget, QProgressBar, QRubberBand, QSizeGrip, QSplashScreen, QSplitterHandle, QStatusBar, QTabBar, QTabWidget, QToolBar и QWizardPage

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

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

перечисление ФлагОтрисовки { РисованиеФонаОкна, РисованиеПодокругов, ИгнорированиеМаски }
флаги ФлагиОтрисовки

Свойства

  • 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
  • 1 свойство унаследовано от QObject

Публичные функции

QWidget(QWidget *parent = nullptr, Qt::WindowFlags f = ...)
virtual ~QWidget()
bool acceptDrops() const
QString accessibleDescription() const
QString accessibleName() const
QList<QAction *> actions() const
void activateWindow()
void addAction(QAction *action)
void addActions(QList<QAction *> actions)
void adjustSize()
bool autoFillBackground() const
QPalette::ColorRole backgroundRole() const
QBackingStore * backingStore() const
QSize baseSize() const
QWidget * childAt(int x, int y) const
QWidget * childAt(const QPoint &p) const
QRect childrenRect() const
QRegion childrenRegion() const
void clearFocus()
void clearMask()
QMargins contentsMargins() const
QRect contentsRect() const
Qt::ContextMenuPolicy contextMenuPolicy() const
QCursor cursor() const
WId effectiveWinId() const
void ensurePolished() const
Qt::FocusPolicy focusPolicy() const
QWidget * focusProxy() const
QWidget * focusWidget() const
const QFont & font() const
QFontInfo fontInfo() const
QFontMetrics fontMetrics() const
QPalette::ColorRole foregroundRole() const
QRect frameGeometry() const
QSize frameSize() const
const QRect & geometry() const
void getContentsMargins(int *left, int *top, int *right, int *bottom) const
QPixmap grab(const QRect &rectangle = QRect(QPoint(0, 0), QSize(-1, -1)))
void grabGesture(Qt::GestureType gesture, Qt::GestureFlags flags = ...)
void grabKeyboard()
void grabMouse()
void grabMouse(const QCursor &cursor)
int grabShortcut(const QKeySequence &key, Qt::ShortcutContext context = Qt::WindowShortcut)
QGraphicsEffect * graphicsEffect() const
QGraphicsProxyWidget * graphicsProxyWidget() const
bool hasEditFocus() const
bool hasFocus() const
virtual bool hasHeightForWidth() const
bool hasMouseTracking() const
bool hasTabletTracking() const
int height() const
virtual int heightForWidth(int w) const
Qt::InputMethodHints inputMethodHints() const
virtual QVariant inputMethodQuery(Qt::InputMethodQuery query) const
void insertAction(QAction *before, QAction *action)
void insertActions(QAction *before, QList<QAction *> actions)
bool isActiveWindow() const
bool isAncestorOf(const QWidget *child) const
bool isEnabled() const
bool isEnabledTo(const QWidget *ancestor) const
bool isFullScreen() const
bool isHidden() const
bool isMaximized() const
END_OF_DOCUMENT_MARKER
bool isMinimized() const
bool isModal() const
bool isVisible() const
bool isVisibleTo(const QWidget *ancestor) const
bool isWindow() const
bool isWindowModified() const
QLayout * layout() const
Qt::LayoutDirection layoutDirection() const
QLocale locale() const
QPoint mapFrom(const QWidget *parent, const QPoint &pos) const
QPoint mapFromGlobal(const QPoint &pos) const
QPoint mapFromParent(const QPoint &pos) const
QPoint mapTo(const QWidget *parent, const QPoint &pos) const
QPoint mapToGlobal(const QPoint &pos) const
QPoint mapToParent(const QPoint &pos) const
QRegion mask() const
int maximumHeight() const
QSize maximumSize() const
int maximumWidth() const
int minimumHeight() const
QSize minimumSize() const
virtual QSize minimumSizeHint() const
int minimumWidth() const
void move(const QPoint &)
void move(int x, int y)
QWidget * nativeParentWidget() const
QWidget * nextInFocusChain() const
QRect normalGeometry() const
void overrideWindowFlags(Qt::WindowFlags flags)
const QPalette & palette() const
QWidget * parentWidget() const
QPoint pos() const
QWidget * previousInFocusChain() const
QRect rect() const
void releaseKeyboard()
void releaseMouse()
void releaseShortcut(int id)
void removeAction(QAction *action)
void render(QPaintDevice *target, const QPoint &targetOffset = QPoint(), const QRegion &sourceRegion = QRegion(), QWidget::RenderFlags renderFlags = ...)
void render(QPainter *painter, const QPoint &targetOffset = QPoint(), const QRegion &sourceRegion = QRegion(), QWidget::RenderFlags renderFlags = ...)
void repaint(int x, int y, int w, int h)
void repaint(const QRect &rect)
void repaint(const QRegion &rgn)
void resize(const QSize &)
void resize(int w, int h)
bool restoreGeometry(const QByteArray &geometry)
QByteArray saveGeometry() const
void scroll(int dx, int dy)
void scroll(int dx, int dy, const QRect &r)
void setAcceptDrops(bool on)
void setAccessibleDescription(const QString &description)
void setAccessibleName(const QString &name)
void setAttribute(Qt::WidgetAttribute attribute, bool on = true)
void setAutoFillBackground(bool enabled)
void setBackgroundRole(QPalette::ColorRole role)
void setBaseSize(const QSize &)
void setBaseSize(int basew, int baseh)
void setContentsMargins(int left, int top, int right, int bottom)
void setContentsMargins(const QMargins &margins)
void setContextMenuPolicy(Qt::ContextMenuPolicy policy)
void setCursor(const QCursor &)
void setEditFocus(bool enable)
void setFixedHeight(int h)
void setFixedSize(const QSize &s)
void setFixedSize(int w, int h)
void setFixedWidth(int w)
void setFocus(Qt::FocusReason reason)
void setFocusPolicy(Qt::FocusPolicy policy)
void setFocusProxy(QWidget *w)
void setFont(const QFont &)
void setForegroundRole(QPalette::ColorRole role)
void setGeometry(const QRect &)
void setGeometry(int x, int y, int w, int h)
void setGraphicsEffect(QGraphicsEffect *effect)
void setInputMethodHints(Qt::InputMethodHints hints)
void setLayout(QLayout *layout)
void setLayoutDirection(Qt::LayoutDirection direction)
void setLocale(const QLocale &locale)
void setMask(const QBitmap &bitmap)
void setMask(const QRegion &region)
void setMaximumHeight(int maxh)
void setMaximumSize(const QSize &)
void setMaximumSize(int maxw, int maxh)
void setMaximumWidth(int maxw)
void setMinimumHeight(int minh)
void setMinimumSize(const QSize &)
void setMinimumSize(int minw, int minh)
void setMinimumWidth(int minw)
void setMouseTracking(bool enable)
void setPalette(const QPalette &)
void setParent(QWidget *parent)
void setParent(QWidget *parent, Qt::WindowFlags f)
void setShortcutAutoRepeat(int id, bool enable = true)
void setShortcutEnabled(int id, bool enable = true)
void setSizeIncrement(const QSize &)
void setSizeIncrement(int w, int h)
void setSizePolicy(QSizePolicy)
void setSizePolicy(QSizePolicy::Policy horizontal, QSizePolicy::Policy vertical)
void setStatusTip(const QString &)
void setStyle(QStyle *style)
void setTabletTracking(bool enable)
void setToolTip(const QString &)
void setToolTipDuration(int msec)
void setUpdatesEnabled(bool enable)
void setWhatsThis(const QString &)
void setWindowFilePath(const QString &filePath)
void setWindowFlag(Qt::WindowType flag, bool on = true)
void setWindowFlags(Qt::WindowFlags type)
void setWindowIcon(const QIcon &icon)
void setWindowModality(Qt::WindowModality windowModality)
void setWindowOpacity(qreal level)
void setWindowRole(const QString &role)
void setWindowState(Qt::WindowStates windowState)
void setupUi(QWidget *widget)
QSize size() const
virtual QSize sizeHint() const
QSize sizeIncrement() const
QSizePolicy sizePolicy() const
void stackUnder(QWidget *w)
QString statusTip() const
QStyle * style() const
QString styleSheet() const
bool testAttribute(Qt::WidgetAttribute attribute) const
QString toolTip() const
int toolTipDuration() const
bool underMouse() const
void ungrabGesture(Qt::GestureType gesture)
void unsetCursor()
void unsetLayoutDirection()
void unsetLocale()
void update(int x, int y, int w, int h)
void update(const QRect &rect)
void update(const QRegion &rgn)
void updateGeometry()
bool updatesEnabled() const
QRegion visibleRegion() const
QString whatsThis() const
int width() const
WId winId() const
QWidget * window() const
QString windowFilePath() const
Qt::WindowFlags windowFlags() const
QWindow * windowHandle() const
QIcon windowIcon() const
Qt::WindowModality windowModality() const
qreal windowOpacity() const
QString windowRole() const
Qt::WindowStates windowState() const
QString windowTitle() const
Qt::WindowType windowType() const
int x() const
int y() const

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

virtual QPaintEngine * paintEngine() const override
  • 31 публичных функций унаследовано от QObject
  • 14 публичных функций унаследовано от QPaintDevice

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

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

Сигналы

void customContextMenuRequested(const QPoint &pos)
void windowIconChanged(const QIcon &icon)
void windowTitleChanged(const QString &title)
  • 2 signals inherited from QObject

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

QWidget * createWindowContainer(QWindow *window, QWidget *parent = nullptr, Qt::WindowFlags flags = ...)
QWidget * find(WId id)
QWidget * keyboardGrabber()
QWidget * mouseGrabber()
void setTabOrder(QWidget *first, QWidget *second)
const QMetaObject staticMetaObject
  • 9 static public members inherited from QObject

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

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

Реализованные защищённые функции

виртуальный bool event(QEvent *event) override
виртуальный void initPainter(QPainter *painter) const override
виртуальный int metric(QPaintDevice::PaintDeviceMetric m) const override
  • 9 защищённых функций унаследовано от QObject
  • 1 защищённая функция унаследовано от QPaintDevice

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

void updateMicroFocus()

Макросы

QWIDGETSIZE_MAX

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

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

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

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

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

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

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

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

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

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

A parent widget containing various child widgets.

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

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

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

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

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

Пользовательские виджеты и рисование

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

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

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

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

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

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

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

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

События

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • В левом виджете нет дополнительных свойств или атрибутов виджетов. Это стандартное состояние подходит для большинства пользовательских виджетов, использующих прозрачность, имеющих непрямоугольную форму или не рисующих по всей своей области с непрозрачной кистью.
  • В центральном виджете установлено свойство autoFillBackground. Это свойство используется с пользовательскими виджетами, которые полагаются на виджет для предоставления фонового изображения по умолчанию и не рисуют по всей своей области с непрозрачной кистью.
  • В правом виджете установлен атрибут виджета Qt::WA_OpaquePaintEvent. Это означает, что виджет будет рисовать по всей своей области непрозрачными цветами. Область виджета изначально будет *неинициализированной*, что на диаграмме представлено красной диагональной сеткой, которая просвечивает через перерисованную область. Атрибут Qt::WA_OpaquePaintArea полезен для виджетов, которые нуждаются в быстром рисовании собственного специализированного содержимого и не нуждаются в заполненном фоновом изображении по умолчанию.

Для быстрого обновления пользовательских виджетов простыми цветами фона, таких как виджеты для построения графиков в режиме реального времени, лучше определить подходящий цвет фона (используя setBackgroundRole() с ролью QPalette::Window), установить свойство autoFillBackground и реализовать только необходимую функциональность рисования в методе paintEvent виджета.

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

Если у виджета есть атрибут виджета Qt::WA_OpaquePaintEvent *и* установлено свойство autoFillBackground, атрибут Qt::WA_OpaquePaintEvent имеет приоритет. В зависимости от ваших требований, вы должны выбрать один из них.

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

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

Создание прозрачных окон

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

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

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

  • X11: Данная функция использует сервер X, поддерживающий визуализацию ARGB и менеджер компоновки окон.
  • Windows: Для работы с прозрачностью виджету необходимо установить флаг окна Qt::FramelessWindowHint.

Родные виджеты против внешних виджетов

Введённые в Qt 4.4, внешние виджеты — это виджеты, неизвестные системе окон. Они не имеют связанной с ними родной дескриптора окна. Эта функция значительно ускоряет рисование, изменение размеров виджетов и устраняет мерцание.

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

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

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

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

enum QWidget::RenderFlagflags QWidget::RenderFlags

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

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

Это перечисление было введено или изменено в Qt 4.3.

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

END_OF_DOCUMENT_MARKER

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

acceptDrops : bool

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

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

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

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

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

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

bool acceptDrops() const
void setAcceptDrops(bool on)

См. также Перетаскивание и отпускание.

accessibleDescription : QString

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

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

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

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

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

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

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

accessibleName : QString

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

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

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

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

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

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

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

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

autoFillBackground : bool

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

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

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

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

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

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

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

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

bool autoFillBackground() const
void setAutoFillBackground(bool enabled)

См. также Qt::WA_OpaquePaintEvent, Qt::WA_NoSystemBackground и Прозрачность и двойная буферизация.

baseSize : QSize

Это свойство содержит базовый размер виджета

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

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

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

QSize baseSize() const
void setBaseSize(const QSize &)
void setBaseSize(int basew, int baseh)

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

childrenRect : const QRect

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

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

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

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

QRect childrenRect() const

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

childrenRegion : const QRegion

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

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

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

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

QRegion childrenRegion() const

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

contextMenuPolicy : Qt::ContextMenuPolicy

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

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

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

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

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

cursor : QCursor

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

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

Виджет редактора может использовать курсор в виде I-луча:

setCursor(Qt::IBeamCursor);

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

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

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

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

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

См. также QApplication::setOverrideCursor().

enabled : bool

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

В общем случае, активный виджет обрабатывает события клавиатуры и мыши; неактивный виджет — нет. Исключение составляет QAbstractButton.

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

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

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

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

bool isEnabled() const
void setEnabled(bool)

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

focus : const bool

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

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

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

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

bool hasFocus() const

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

focusPolicy : Qt::FocusPolicy

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

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

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

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

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

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

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

font : QFont

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

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

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

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

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

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

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

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

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

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

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

frameGeometry : const QRect

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

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

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

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

QRect frameGeometry() const

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

frameSize : const QSize

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

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

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

QSize frameSize() const

fullScreen : const bool

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

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

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

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

bool isFullScreen() const

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

geometry : QRect

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

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

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

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

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

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

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

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

См. также frameGeometry(), rect(), переместить(), изменить размер(), moveEvent(), resizeEvent(), minimumSize() и maximumSize().

height : const int

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

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

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

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

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

int height() const

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

inputMethodHints : Qt::InputMethodHints

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

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

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

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

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

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

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

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

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

isActiveWindow : const bool

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

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

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

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

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

bool isActiveWindow() const

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

layoutDirection : Qt::LayoutDirection

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

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

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

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

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

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

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

locale : QLocale

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

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

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

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

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

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

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

maximized : const bool

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

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

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

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

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

bool isMaximized() const

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

maximumHeight : int

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

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

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

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

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

int maximumHeight() const
void setMaximumHeight(int maxh)

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

maximumSize : QSize

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

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

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

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

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

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

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

maximumWidth : int

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

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

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

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

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

int maximumWidth() const
void setMaximumWidth(int maxw)

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

minimized : const bool

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

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

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

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

bool isMinimized() const

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

minimumHeight : int

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

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

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

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

int minimumHeight() const
void setMinimumHeight(int minh)

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

minimumSize : QSize

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

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

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

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

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

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

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

minimumSizeHint : const QSize

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

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

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

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

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

virtual QSize minimumSizeHint() const

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

minimumWidth : int

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

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

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

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

int minimumWidth() const
void setMinimumWidth(int minw)

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

modal : const bool

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

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

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

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

bool isModal() const

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

mouseTracking : bool

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

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

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

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

bool hasMouseTracking() const
void setMouseTracking(bool enable)

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

normalGeometry : const QRect

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

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

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

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

QRect normalGeometry() const

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

palette : QPalette

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

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

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

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

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

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

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

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

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

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

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

pos : QPoint

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

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

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

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

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

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

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

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

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

rect : const QRect

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

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

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

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

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

QRect rect() const

См. также size.

size : QSize

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

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

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

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

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

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

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

QSize size() const
void resize(int w, int h)
void resize(const QSize &)

См. также pos, geometry, minimumSize, maximumSize, resizeEvent() и adjustSize().

sizeHint : const QSize

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

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

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

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

virtual QSize sizeHint() const

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

sizeIncrement : QSize

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

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

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

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

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

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

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

QSize sizeIncrement() const
void setSizeIncrement(const QSize &)
void setSizeIncrement(int w, int h)

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

sizePolicy : QSizePolicy

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

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

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

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

QSizePolicy sizePolicy() const
void setSizePolicy(QSizePolicy)
void setSizePolicy(QSizePolicy::Policy horizontal, QSizePolicy::Policy vertical)

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

statusTip : QString

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

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

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

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

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

styleSheet : QString

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

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

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

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

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

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

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

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

tabletTracking : bool

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

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

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

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

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

bool hasTabletTracking() const
void setTabletTracking(bool enable)

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

toolTip : QString

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

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

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

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

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

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

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

toolTipDuration : int

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

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

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

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

int toolTipDuration() const
void setToolTipDuration(int msec)

См. также toolTip.

updatesEnabled : bool

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

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

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

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

Пример:

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

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

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

bool updatesEnabled() const
void setUpdatesEnabled(bool enable)

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

visible : bool

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

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

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

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

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

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

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

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

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

whatsThis : QString

Это свойство содержит текст справки "Что это?" для виджета.

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

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

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

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

width : const int

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

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

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

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

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

int width() const

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

windowFilePath : QString

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

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

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

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

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

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

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

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

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

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

windowFlags : Qt::WindowFlags

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

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

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

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

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

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

windowIcon : QIcon

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

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

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

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

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

void windowIconChanged(const QIcon &icon)

См. также windowTitle.

windowModality : Qt::WindowModality

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

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

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

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

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

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

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

windowModified : bool

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

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

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

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

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

bool isWindowModified() const
void setWindowModified(bool)

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

windowOpacity : double

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

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

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

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

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

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

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

qreal windowOpacity() const
void setWindowOpacity(qreal level)

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

windowTitle : QString

Это свойство содержит заголовок окна (заголовок).

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

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

На некоторых платформах рабочего стола (включая Windows и Unix) к концу заголовка окна добавляется имя приложения (из QGuiApplication::applicationDisplayName), если оно задано. Это выполняется плагином QPA, поэтому оно отображается пользователю, но не является частью строки windowTitle.

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

QString windowTitle() const
void setWindowTitle(const QString &)

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

void windowTitleChanged(const QString &title)

См. также windowIcon, windowModified и windowFilePath.

x : const int

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

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

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

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

int x() const

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

y : const int

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

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

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

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

int y() const

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

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

QWidget::QWidget(QWidget *parent = nullptr, Qt::WindowFlags f = ...)

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

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

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

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

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

См. также windowFlags.

[virtual] QWidget::~QWidget()

Уничтожает виджет.

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

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

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

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

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

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

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

void QWidget::activateWindow()

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

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

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

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

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

void QWidget::addAction(QAction *action)

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

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

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

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

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

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

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

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

void QWidget::adjustSize()

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

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

Для окон также учитывается размер экрана. Если sizeHint() меньше (200, 100) и политика размера равна expanding, окно будет по крайней мере (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().

bool QWidget::close()

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

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

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

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

void QWidget::closeEvent(QCloseEvent *event)

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

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

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

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

См. также event(), hide(), close(), QCloseEvent, и Application Example.

QMargins QWidget::contentsMargins() const

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

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

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

QRect QWidget::contentsRect() const

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

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

END_OF_DOCUMENT_MARKER

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

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

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

В реализации по умолчанию событие контекста игнорируется. Для получения более подробной информации, см. документацию QContextMenuEvent.

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

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

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

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

Инициализирует окно (устанавливает геометрию и т.д.) если initializeWindow равно true. Если initializeWindow равно false, инициализация не выполняется. Этот параметр имеет смысл только если window является допустимым окном.

Уничтожает старое окно, если destroyOldWindow равно true. Если destroyOldWindow равно false, вы сами несете ответственность за уничтожение окна (используя платформенно-специфический код).

Конструктор QWidget вызывает create(0,true,true) для создания окна для этого виджета.

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

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

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

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

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

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

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

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

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

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

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

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

[protected] void QWidget::destroy(bool destroyWindow = true, bool destroySubWindows = true)

Освобождает системные ресурсы окна. Уничтожает окно виджета, если destroyWindow равно true.

destroy() рекурсивно вызывает себя для всех дочерних виджетов, передавая destroySubWindows в качестве параметра destroyWindow. Для более точного управления уничтожением дочерних виджетов сначала уничтожьте их выборочно.

Эта функция обычно вызывается из деструктора QWidget.

[virtual protected] void QWidget::dragEnterEvent(QDragEnterEvent *event)

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

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

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

См. также QDrag и QDragEnterEvent.

[virtual protected] void QWidget::dragLeaveEvent(QDragLeaveEvent *event)

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

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

См. также QDrag и QDragLeaveEvent.

[virtual protected] void QWidget::dragMoveEvent(QDragMoveEvent *event)

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

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

См. также QDrag и QDragMoveEvent.

[virtual protected] void QWidget::dropEvent(QDropEvent *event)

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

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

См. также QDrag и QDropEvent.

WId QWidget::effectiveWinId() const

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

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

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

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

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

void QWidget::ensurePolished() const

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

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

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

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

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

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

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

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

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

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

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

Переопределено из QObject::event().

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

События нажатия и отпуска клавиш обрабатываются по-другому, чем другие события. event() проверяет клавиши Tab и Shift+Tab и пытается соответствующим образом переместить фокус. Если нет виджета, на который можно переместить фокус (или нажатие клавиши не Tab или Shift+Tab), event() вызывает keyPressEvent().

Обработка событий мыши и планшета также несколько специфична: только когда виджет включен, event() вызовет специализированные обработчики, такие как mousePressEvent; в противном случае он отбросит событие.

Эта функция возвращает true, если событие было распознано, в противном случае возвращает false. Если распознанное событие было принято (см. QEvent::accepted), любая дальнейшая обработка, такая как распространение события на родительский виджет, прекращается.

См. также closeEvent(), focusInEvent(), focusOutEvent(), enterEvent(), keyPressEvent(), keyReleaseEvent(), leaveEvent(), mouseDoubleClickEvent(), mouseMoveEvent(), mousePressEvent(), mouseReleaseEvent(), moveEvent(), paintEvent(), resizeEvent(), QObject::event() и QObject::timerEvent().

[static] QWidget *QWidget::find(WId id)

Возвращает указатель на виджет с идентификатором/дескриптором окна id.

Тип идентификатора окна зависит от базовой систем окна, см. qwindowdefs.h для фактического определения. Если виджета с таким идентификатором нет, возвращается 0.

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

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

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

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

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

[protected] bool QWidget::focusNextChild()

Ищет новый виджет, чтобы передать фокус клавиатуры, соответствующим образом для Tab, и возвращает true, если новый виджет найден, или false, если нет.

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

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

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

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

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

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

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

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

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

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

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

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

[protected] bool QWidget::focusPreviousChild()

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

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

QWidget *QWidget::focusProxy() const

Возвращает прокси-виджет фокуса или 0, если прокси-виджета фокуса нет.

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

QWidget *QWidget::focusWidget() const

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

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

QFontInfo QWidget::fontInfo() const

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

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

QFontMetrics QWidget::fontMetrics() const

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

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

QPalette::ColorRole QWidget::foregroundRole() const

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

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

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

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

void QWidget::getContentsMargins(int *left, int *top, int *right, int *bottom) const

Возвращает отступы содержимого виджета для left, top, right и bottom.

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

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

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

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

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

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

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

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

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

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

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

void QWidget::grabKeyboard()

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

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

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

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

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

void QWidget::grabMouse()

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

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

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

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

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

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

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

void QWidget::grabMouse(const QCursor &cursor)

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

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

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

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

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

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

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

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

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

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

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

QGraphicsEffect *QWidget::graphicsEffect() const

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

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

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

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

QGraphicsProxyWidget *QWidget::graphicsProxyWidget() const

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

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

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

bool QWidget::hasEditFocus() const

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

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

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

[virtual] bool QWidget::hasHeightForWidth() const

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

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

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

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

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

[slot] void QWidget::hide()

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

bool QWidget::isAncestorOf(const QWidget *child) const

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

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

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

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

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

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

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

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

bool QWidget::isHidden() const

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

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

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

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

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

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

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

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

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

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

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

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

bool QWidget::isWindow() const

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[static] QWidget *QWidget::keyboardGrabber()

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

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

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

QLayout *QWidget::layout() const

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

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

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

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

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

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

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

[slot] void QWidget::lower()

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

QRegion QWidget::mask() const

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

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

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

Переопределяет функцию QPaintDevice::metric().

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

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

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

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

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

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

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

[static] QWidget *QWidget::mouseGrabber()

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

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

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

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

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

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

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

Если нужно отобразить всплывающую подсказку немедленно, во время перемещения мыши (например, чтобы получить координаты мыши с помощью QMouseEvent::pos() и отобразить их как всплывающую подсказку), необходимо сначала включить отслеживание мыши, как описано выше. Затем, чтобы гарантировать, что подсказка обновляется немедленно, необходимо вызвать 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, long *result)

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

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

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

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

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

См. также QAbstractNativeEventFilter.

QWidget *QWidget::nativeParentWidget() const

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

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

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

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

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

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

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

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

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

Многие виджеты могут просто перерисовать всю свою поверхность при запросе, но некоторые медленные виджеты нуждаются в оптимизации, рисуя только запрошенную область: QPaintEvent::region(). Эта оптимизация скорости не меняет результат, так как отрисовка обрезается до этой области во время обработки события. QListView и QTableView делают это, например.

Qt также пытается ускорить отрисовку, объединяя несколько событий отрисовки в одно. Когда update() вызывается несколько раз или система окон отправляет несколько событий отрисовки, Qt объединяет эти события в одно событие с большей областью (см. QRegion::united()). Функция repaint() не позволяет оптимизировать это, поэтому мы рекомендуем использовать update() по возможности.

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

Фон можно установить с помощью setBackgroundRole() и setPalette().

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

Примечание: Как правило, вы должны воздерживаться от вызова update() или repaint() внутри paintEvent(). Например, вызов update() или repaint() для дочерних элементов внутри paintEvent() приводит к неопределённому поведению; дочерний элемент может или не может получить событие отрисовки.

Предупреждение: Если вы используете пользовательский движок отрисовки без поддержки буфера заднего плана Qt, необходимо установить Qt::WA_PaintOnScreen. В противном случае QWidget::paintEngine() никогда не будет вызван; вместо этого будет использоваться буфер заднего плана.

См. также event(), repaint(), update(), QPainter, QPixmap, QPaintEvent и Пример аналоговых часов.

QWidget *QWidget::parentWidget() const

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

QWidget *QWidget::previousInFocusChain() const

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

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

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

[slot] void QWidget::raise()

Возводит этот виджет наверх стека родительского виджета.

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

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

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

void QWidget::releaseKeyboard()

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

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

void QWidget::releaseMouse()

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

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

void QWidget::releaseShortcut(int id)

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

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

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

void QWidget::removeAction(QAction *action)

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

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

void QWidget::render(QPaintDevice *target, const QPoint &targetOffset = QPoint(), const QRegion &sourceRegion = QRegion(), QWidget::RenderFlags renderFlags = ...)

Отображает sourceRegion этого виджета в target, используя renderFlags для определения способа отображения. Отрисовка начинается в targetOffset в target. Например:

QPixmap pixmap(widget->size());
widget->render(&pixmap);

Если sourceRegion — пустая область, эта функция будет использовать QWidget::rect() в качестве области, т. е. весь виджет.

Убедитесь, что вы вызываете QPainter::end() для активного отрисовочного устройства target (если оно есть) до отрисовки. Например:

QPainter painter(this);
...
painter.end();
myWidget->render(this);

Примечание: Чтобы получить содержимое QOpenGLWidget, используйте QOpenGLWidget::grabFramebuffer() вместо этого.

Примечание: Чтобы получить содержимое QGLWidget (устаревшее), используйте QGLWidget::grabFrameBuffer() или QGLWidget::renderPixmap() вместо этого.

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

void QWidget::render(QPainter *painter, const QPoint &targetOffset = QPoint(), const QRegion &sourceRegion = QRegion(), QWidget::RenderFlags renderFlags = ...)

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

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

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

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

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

[slot] void QWidget::repaint()

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

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

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

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

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

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

Этот вариант перерисовывает прямоугольник (x, y, w, h) внутри виджета.

Если w отрицательно, оно заменяется на width() - x, а если h отрицательно, оно заменяется на height() - y.

void QWidget::repaint(const QRect &rect)

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

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

void QWidget::repaint(const QRegion &rgn)

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

Этот вариант перерисовывает область rgn внутри виджета.

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

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

Соответствует resize(QSize(w, h)).

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

[virtual protected] void QWidget::resizeEvent(QResizeEvent *event)

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

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

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

bool QWidget::restoreGeometry(const QByteArray &geometry)

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

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

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

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

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

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

Этот метод был добавлен в Qt 4.2.

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

QByteArray QWidget::saveGeometry() const

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

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

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

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

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

Этот метод был добавлен в Qt 4.2.

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

void QWidget::scroll(int dx, int dy)

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

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

Поскольку виджеты по умолчанию распространяют содержимое своих родителей, вам необходимо установить свойство autoFillBackground или использовать setAttribute() для установки атрибута Qt::WA_OpaquePaintEvent, чтобы сделать виджет непрозрачным.

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

См. также Прозрачность и двойная буферизация.

void QWidget::scroll(int dx, int dy, const QRect &r)

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

Этот вариант прокручивает только r и не перемещает дочерние элементы виджета.

Если r пуста или некорректна, результат неопределён.

См. также QScrollArea.

void QWidget::setAttribute(Qt::WidgetAttribute attribute, bool on = true)

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

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

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

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

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

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

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

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

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

Это перегруженный метод.

Соответствует setBaseSize(QSize(basew, baseh)). Устанавливает базовый размер виджета шириной basew и высотой baseh.

Примечание: Метод-сеттер для свойства baseSize.

void QWidget::setContentsMargins(int left, int top, int right, int bottom)

Устанавливает отступы вокруг содержимого виджета размерами left, top, right и bottom. Отступы используются системой макетов и могут использоваться подклассами для указания области для рисования (например, исключая рамку).

Изменение отступов вызовет resizeEvent().

См. также contentsMargins(), contentsRect() и getContentsMargins().

void QWidget::setContentsMargins(const QMargins &margins)

Это перегруженный метод.

Метод setContentsMargins устанавливает отступы вокруг содержимого виджета.

Устанавливает отступы вокруг содержимого виджета размерами, определяемыми margins. Отступы используются системой макетов и могут использоваться подклассами для указания области для рисования (например, исключая рамку).

Изменение отступов вызовет resizeEvent().

Этот метод был добавлен в Qt 4.6.

См. также contentsRect() и getContentsMargins().

[slot] void QWidget::setDisabled(bool disable)

Отключает события ввода виджета, если disable равно true; в противном случае включает события ввода.

См. документацию enabled для получения дополнительной информации.

См. также isEnabledTo(), QKeyEvent, QMouseEvent и changeEvent().

void QWidget::setEditFocus(bool enable)

Если enable равно true, этот виджет получает фокус редактирования, в этом случае Qt::Key_Up и Qt::Key_Down будут доставлены виджету обычно; в противном случае Qt::Key_Up и Qt::Key_Down используются для изменения фокуса.

Эта функция доступна только в Qt для Embedded Linux.

См. также hasEditFocus() и QApplication::keypadNavigationEnabled().

void QWidget::setFixedHeight(int h)

Устанавливает минимальную и максимальную высоты виджета в h, не изменяя ширину. Предоставлено для удобства.

См. также sizeHint(), minimumSize(), maximumSize() и setFixedSize().

void QWidget::setFixedSize(const QSize &s)

Устанавливает минимальный и максимальный размеры виджета в s, тем самым предотвращая его изменение в размерах.

Это переопределит ограничения размеров, заданные по умолчанию QLayout.

Чтобы удалить ограничения, установите размер в QWIDGETSIZE_MAX.

В качестве альтернативы, если вы хотите, чтобы виджет имел фиксированный размер, основанный на его содержимом, вы можете вызвать QLayout::setSizeConstraint(QLayout::SetFixedSize);

См. также maximumSize и minimumSize.

void QWidget::setFixedSize(int w, int h)

Это перегруженный метод.

Устанавливает ширину виджета в w и высоту в h.

void QWidget::setFixedWidth(int w)

Устанавливает минимальную и максимальную ширину виджета в w без изменения высоты. Предоставлено для удобства.

См. также sizeHint(), minimumSize(), maximumSize(), и setFixedSize().

void QWidget::setFocus(Qt::FocusReason reason)

Передает фокус ввода с клавиатуры этому виджету (или его прокси фокуса), если этот виджет или один из его родителей является активным окном. Аргумент reason передается в любое событие фокуса, отправленное из этой функции, он используется для объяснения причины получения виджетом фокуса. Если окно не активно, виджету будет предоставлен фокус, когда окно станет активным.

Сначала событие о предстоящем изменении фокуса отправляется виджету с фокусом (если таковой имеется), чтобы сообщить ему, что он собирается потерять фокус. Затем фокус меняется, событие выхода из фокуса отправляется предыдущему элементу с фокусом, а событие ввода фокуса отправляется новому элементу, чтобы сообщить ему, что он только что получил фокус. (Ничего не происходит, если виджеты ввода и выхода из фокуса одинаковы.)

Примечание: На встроенных платформах setFocus() не приведет к открытию панели ввода методом ввода. Если вы хотите, чтобы это произошло, вы должны сами отправить событие QEvent::RequestSoftwareInputPanel в виджет.

setFocus() предоставляет фокус виджету независимо от его политики фокуса, но не очищает захват клавиатуры (см. grabKeyboard()).

Обратите внимание, что если виджет скрыт, он не примет фокус, пока не будет показан.

Предупреждение: Если вы вызываете setFocus() в функции, которая сама может вызываться из focusOutEvent() или focusInEvent(), вы можете получить бесконечную рекурсию.

См. также hasFocus(), clearFocus(), focusInEvent(), focusOutEvent(), setFocusPolicy(), focusWidget(), QApplication::focusWidget(), grabKeyboard(), grabMouse(), Фокус клавиатуры в виджетах и QEvent::RequestSoftwareInputPanel.

[slot] void QWidget::setFocus()

Это перегруженная функция.

Передает фокус ввода с клавиатуры этому виджету (или его прокси фокуса), если этот виджет или один из его родителей является активным окном.

void QWidget::setFocusProxy(QWidget *w)

Устанавливает прокси фокуса виджета на виджет w. Если w равен 0, функция сбрасывает прокси фокуса для этого виджета.

Некоторые виджеты могут «иметь фокус», но создают дочерний виджет, например, QLineEdit, для фактического обработки фокуса. В этом случае виджет может установить редактор как свой прокси фокуса.

setFocusProxy() устанавливает виджет, который фактически получит фокус, когда «этот виджет» получит его. Если есть прокси фокуса, setFocus() и hasFocus() работают с прокси фокуса.

См. также focusProxy().

void QWidget::setForegroundRole(QPalette::ColorRole role)

Устанавливает роль переднего плана виджета в role.

Роль переднего плана определяет цвет из палитры виджета, который используется для отрисовки переднего плана.

Если role равен QPalette::NoRole, виджет использует роль переднего плана, которая контрастирует с ролью заднего плана.

Обратите внимание, что стили могут свободно выбирать любой цвет из палитры. Вы можете изменить палитру или установить таблицу стилей, если не получите желаемого результата с помощью setForegroundRole().

См. также foregroundRole() и backgroundRole().

void QWidget::setGeometry(int x, int y, int w, int h)

Это перегруженная функция.

Это соответствует setGeometry(QRect(x, y, w, h)).

Примечание: Функция-сеттер для свойства geometry.

void QWidget::setGraphicsEffect(QGraphicsEffect *effect)

Функция setGraphicsEffect предназначена для установки графического эффекта виджета.

Устанавливает effect в качестве эффекта виджета. Если на этом виджете уже установлен эффект, QWidget удалит существующий эффект перед установкой нового effect.

Если effect является установленным эффектом на другом виджете, setGraphicsEffect() удалит эффект с виджета и установит его на этот виджет.

QWidget принимает во владение effect.

Примечание: Эта функция применит эффект к себе и всем своим дочерним элементам.

Примечание: Графические эффекты не поддерживаются для виджетов на основе OpenGL, таких как QGLWidget, QOpenGLWidget и QQuickWidget.

Эта функция была добавлена в Qt 4.6.

См. также graphicsEffect().

[slot] void QWidget::setHidden(bool hidden)

Функция для удобства, эквивалентная setVisible(!hidden).

См. также isHidden().

void QWidget::setLayout(QLayout *layout)

Устанавливает менеджер компоновки для этого виджета в layout.

Если на этом виджете уже установлен менеджер компоновки, QWidget не позволит установить другой. Вы должны сначала удалить существующий менеджер компоновки (возвращается layout()) прежде, чем вы сможете вызвать setLayout() с новой компоновкой.

Если layout является менеджером компоновки другого виджета, setLayout() переродится и сделает его менеджером компоновки для этого виджета.

Пример:

    QVBoxLayout *layout = new QVBoxLayout;
    layout->addWidget(formWidget);
    setLayout(layout);

Альтернативой вызову этой функции является передача этого виджета в конструктор компоновки.

QWidget примет во владение layout.

См. также layout() и Управление компоновкой.

void QWidget::setMask(const QBitmap &bitmap)

Приводит к тому, что видимыми являются только те пиксели виджета, для которых в bitmap соответствует бит 1. Если область включает пиксели за пределами rect() виджета, элементы управления системы окон в этой области могут или могут не быть видны, в зависимости от платформы.

Обратите внимание, что этот эффект может быть медленным, если область является особенно сложной.

Следующий код демонстрирует, как изображение с альфа-каналом может быть использовано для генерации маски для виджета:

    QLabel topLevelLabel;
    QPixmap pixmap(":/images/tux.png");
    topLevelLabel.setPixmap(pixmap);
    topLevelLabel.setMask(pixmap.mask());

Метка, отображаемая этим кодом, маскируется с использованием содержащегося в ней изображения, что создаёт вид, как будто неправильно-оформленное изображение отрисовывается непосредственно на экран.

Маскированные виджеты получают события мыши только на своих видимых частях.

См. также mask(), clearMask(), windowOpacity(), и Пример часов с формой.

void QWidget::setMask(const QRegion &region)

Это перегруженная функция.

Приводит к тому, что видимыми являются только те части виджета, которые перекрывают region. Если область включает пиксели за пределами rect() виджета, элементы управления системы окон в этой области могут или могут не быть видны, в зависимости от платформы.

Обратите внимание, что этот эффект может быть медленным, если область является особенно сложной.

См. также windowOpacity.

void QWidget::setMaximumSize(int maxw, int maxh)

Это перегруженная функция.

Эта функция соответствует setMaximumSize(QSize(maxw, maxh)). Устанавливает максимальную ширину в maxw и максимальную высоту в maxh.

Примечание: Функция-сеттер для свойства maximumSize.

void QWidget::setMinimumSize(int minw, int minh)

Это перегруженная функция.

Эта функция соответствует setMinimumSize(QSize(minw, minh)). Устанавливает минимальную ширину в minw и минимальную высоту в minh.

Примечание: Функция-сеттер для свойства minimumSize.

void QWidget::setParent(QWidget *parent)

Устанавливает родителя виджета в parent и сбрасывает флаги окна. Виджет перемещается в положение (0, 0) в его новом родителе.

Если новый родительский виджет находится в другом окне, перемещаемый виджет и его потомки добавляются в конец цепочки табуляции нового родительского виджета в том же внутреннем порядке, что и раньше. Если один из перемещенных виджетов имел фокус клавиатуры, setParent() вызывает clearFocus() для этого виджета.

Если новый родительский виджет находится в том же окне, что и старый родитель, установка родителя не изменяет порядок табуляции или фокус клавиатуры.

Если новый родительский виджет — это старый родительский виджет, эта функция ничего не делает.

Примечание: Виджет становится невидимым при изменении родителя, даже если он был ранее видимым. Для того чтобы сделать виджет видимым снова, необходимо вызвать show().

Предупреждение: Очень маловероятно, что вам понадобится эта функция. Если у вас есть виджет, который динамически изменяет своё содержимое, гораздо проще использовать QStackedWidget.

См. также setWindowFlags().

void QWidget::setParent(QWidget *parent, Qt::WindowFlags f)

Это перегруженная функция.

Эта функция также принимает в качестве аргумента флаги виджета, f.

void QWidget::setShortcutAutoRepeat(int id, bool enable = true)

Если enable имеет значение true, автоматическое повторение сочетания клавиш с заданным id включено; в противном случае оно выключено.

Эта функция была добавлена в Qt 4.2.

См. также grabShortcut() и releaseShortcut().

void QWidget::setShortcutEnabled(int id, bool enable = true)

Если enable имеет значение true, сочетание клавиш с заданным id включено; в противном случае оно выключено.

Предупреждение: Вам обычно не нужно использовать эту функцию, так как система сочетаний клавиш Qt автоматически включает/отключает сочетания клавиш по мере того, как виджеты скрываются/отображаются и получают/теряют фокус. Лучше всего использовать QAction или QShortcut для обработки сочетаний клавиш, так как они проще в использовании, чем эта функция низкого уровня.

См. также grabShortcut() и releaseShortcut().

void QWidget::setSizeIncrement(int w, int h)

Это перегруженная функция.

Устанавливает приращение размера по оси x (ширина) в w и по оси y (высота) в h.

Примечание: Функция-сеттер для свойства sizeIncrement.

void QWidget::setSizePolicy(QSizePolicy::Policy horizontal, QSizePolicy::Policy vertical)

Это перегруженная функция.

Устанавливает политику размеров виджета на horizontal и vertical со стандартным растяжением и без высоты для ширины.

Примечание: Функция-сеттер для свойства sizePolicy.

См. также QSizePolicy::QSizePolicy().

void QWidget::setStyle(QStyle *style)

Устанавливает графический стиль виджета на style. Владение объектом стиля не передаётся.

Если стиль не установлен, виджет использует стиль приложения QApplication::style() вместо него.

Установка стиля виджета не влияет на существующие или будущие дочерние виджеты.

Предупреждение: Эта функция особенно полезна для демонстрационных целей, где вы хотите продемонстрировать возможности стилизации Qt. В реальных приложениях следует избегать её и использовать один согласованный графический стиль.

Предупреждение: Сейчас таблицы стилей Qt не поддерживаются для пользовательских подклассов QStyle. Мы планируем решить эту проблему в будущей версии.

См. также style(), QStyle, QApplication::style() и QApplication::setStyle().

void QWidget::setTabOrder(QWidget *first, QWidget *second)

Помещает виджет second после виджета first в порядке фокусировки.

Это эффективно удаляет виджет second из его цепочки фокуса и вставляет его после виджета first.

Обратите внимание, что поскольку порядок табуляции виджета second изменяется, вы должны организовать цепочку таким образом:

не так:

Если у first или second есть прокси фокуса, setTabOrder() корректно заменяет прокси.

Примечание: Начиная с Qt 5.10: виджет, имеющий дочерний элемент в качестве прокси фокуса, понимается как составной виджет. При установке порядка табуляции между одним или двумя составными виджетами локальный порядок табуляции внутри каждого будет сохранён. Это означает, что если оба виджета — составные виджеты, результирующий порядок табуляции будет от последнего дочернего элемента внутри first до первого дочернего элемента внутри second.

См. также setFocusPolicy(), setFocusProxy() и Фокус клавиатуры в виджетах.

void QWidget::setWindowFlag(Qt::WindowType flag, bool on = true)

Устанавливает флаг окна flag для этого виджета, если on имеет значение true; в противном случае очищает флаг.

Эта функция была добавлена в Qt 5.9.

См. также setWindowFlags(), windowFlags() и windowType().

void QWidget::setWindowRole(const QString &role)

Устанавливает роль окна на role. Это имеет смысл только для окон на X11.

См. также windowRole().

void QWidget::setWindowState(Qt::WindowStates windowState)

Устанавливает состояние окна на windowState. Состояние окна — это комбинация по оператору OR из Qt::WindowState: Qt::WindowMinimized, Qt::WindowMaximized, Qt::WindowFullScreen и Qt::WindowActive.

Если окно невидимо (т. е. isVisible() возвращает false), состояние окна вступит в силу при вызове show(). Для видимых окон изменение происходит немедленно. Например, чтобы переключиться между полноэкранным и обычным режимом, используйте следующий код:

Чтобы восстановить и активировать минимизированное окно (сохранив при этом его максимальное и/или полноэкранное состояние), используйте следующее:

Вызов этой функции скроет виджет. Чтобы сделать виджет видимым снова, необходимо вызвать show().

Примечание: На некоторых системах Qt::WindowActive не является мгновенным и может быть проигнорирован в некоторых случаях.

При изменении состояния окна виджет получает changeEvent() типа QEvent::WindowStateChange.

См. также Qt::WindowState и windowState().

void QWidget::setupUi(QWidget *widget)

Настраивает пользовательский интерфейс для указанного виджета widget.

Примечание: Эта функция доступна для виджетов, которые производятся от описаний пользовательского интерфейса, созданных с помощью uic.

См. также Использование файла UI Designer в вашем приложении.

void QWidget::show()

Отображает виджет и его дочерние виджеты.

Это эквивалентно вызову showFullScreen(), showMaximized() или setVisible(true) в зависимости от стандартного поведения платформы для флагов окна.

См. также raise(), showEvent(), hide(), setVisible(), showMinimized(), showMaximized(), showNormal(), isVisible() и windowFlags().

void QWidget::showEvent(QShowEvent *event)

Обработчик этого события можно переопределить в подклассе, чтобы получить события отображения виджетов, которые передаются в параметре event.

Нестихийные события отображения отправляются виджетам непосредственно перед их отображением. Спонтанные события отображения окон доставляются после.

Примечание: виджет получает спонтанные события отображения и скрытия, когда его статус отображения изменяется системой окон, например, спонтанное событие скрытия, когда пользователь сворачивает окно, и спонтанное событие отображения, когда окно восстанавливается. После получения спонтанного события скрытия виджет всё ещё считается видимым в смысле isVisible().

См. также visible, event() и QShowEvent.

void QWidget::showFullScreen()

Отображает виджет в полноэкранном режиме.

Вызов этой функции влияет только на окна.

Чтобы выйти из полноэкранного режима, вызовите showNormal().

Полноэкранный режим работает нормально под Windows, но имеет определённые проблемы под X. Эти проблемы вызваны ограничениями протокола ICCCM, который определяет взаимодействие между клиентами X11 и менеджером окон. ICCCM просто не понимает концепцию окон в полноэкранном режиме без оформления. Поэтому лучше всего запросить окно без рамки и разместить его, чтобы оно заполняло весь экран. В зависимости от менеджера окон это может сработать или нет. Окно без рамки запрашивается с помощью подсказок MOTIF, которые по крайней мере частично поддерживаются практически всеми современными менеджерами окон.

Альтернативой было бы полное игнорирование менеджера окон и создание окна с флагом Qt::X11BypassWindowManagerHint. Однако это приводит к другим серьёзным проблемам, таким как полная поломка фокуса клавиатуры и очень странные эффекты при изменении рабочего стола или когда пользователь поднимает другие окна.

Менеджеры окон X11, которые следуют современным спецификациям после ICCCM, корректно поддерживают полноэкранный режим.

См. также showNormal(), showMaximized(), show(), hide() и isVisible().

[slot] void QWidget::showMaximized()

Максимизирует виджет.

Вызов этой функции влияет только на окна.

В X11 эта функция может не работать должным образом с некоторыми менеджерами окон. См. документацию Геометрия окна для объяснения.

См. также setWindowState(), showNormal(), showMinimized(), show(), hide() и isVisible().

[slot] void QWidget::showMinimized()

Минимизирует виджет, отображая его в виде значка.

Вызов этой функции влияет только на окна.

См. также showNormal(), showMaximized(), show(), hide(), isVisible() и isMinimized().

[slot] void QWidget::showNormal()

Восстанавливает виджет после его максимизации или минимизации.

Вызов этой функции влияет только на окна.

См. также setWindowState(), showMinimized(), showMaximized(), show(), hide() и isVisible().

void QWidget::stackUnder(QWidget *w)

Размещает виджет под w в стеке родительского виджета.

Для работы с этим виджет и w должны быть соседними.

См. также raise() и lower().

QStyle *QWidget::style() const

См. также QWidget::setStyle(), QApplication::setStyle() и QApplication::style().

[virtual protected] void QWidget::tabletEvent(QTabletEvent *event)

Обработчик событий для события event, который может быть переопределён в подклассе для обработки событий планшета для виджета.

Если вы переопределяете этот обработчик, очень важно отклонить событие, если вы его не обрабатываете, чтобы родительский виджет мог его интерпретировать.

По умолчанию событие игнорируется.

Если отслеживание планшета выключено, события перемещения планшета происходят только если стилус находится в контакте с планшетом или нажата хотя бы одна кнопка стилуса во время перемещения. Если отслеживание планшета включено, события перемещения планшета происходят даже когда стилус находится вблизи планшета без нажатых кнопок.

См. также QEvent::ignore(), QEvent::accept(), event(), setTabletTracking() и QTabletEvent.

bool QWidget::testAttribute(Qt::WidgetAttribute attribute) const

Возвращает true если атрибут attribute установлен для этого виджета; в противном случае возвращает false.

См. также setAttribute().

bool QWidget::underMouse() const

Возвращает true если виджет находится под курсором мыши; в противном случае возвращает false.

Это значение не обновляется должным образом во время операций перетаскивания.

См. также enterEvent() и leaveEvent().

void QWidget::ungrabGesture(Qt::GestureType gesture)

Отписывает виджет от заданного типа жеста gesture.

Эта функция была добавлена в Qt 4.6.

См. также grabGesture() и QGestureEvent.

[slot] void QWidget::update()

Обновляет виджет, если обновления не отключены и виджет не скрыт.

Эта функция не вызывает немедленного перерисовки; вместо этого она планирует событие отрисовки для обработки, когда Qt возвращается к основному циклу событий. Это позволяет Qt оптимизировать производительность и минимизировать мерцание по сравнению с вызовом repaint().

Вызов update() несколько раз обычно приводит к одному вызову paintEvent().

Qt обычно очищает область виджета перед вызовом paintEvent(). Если установлен атрибут виджета Qt::WA_OpaquePaintEvent, виджет отвечает за отрисовку всех своих пикселей непрозрачным цветом.

См. также repaint(), paintEvent(), setUpdatesEnabled() и Пример аналоговых часов.

void QWidget::update(int x, int y, int w, int h)

Это перегруженный метод.

Этот вариант обновляет прямоугольник (x, y, w, h) внутри виджета.

void QWidget::update(const QRect &rect)

Это перегруженный метод.

Этот вариант обновляет прямоугольник rect внутри виджета.

void QWidget::update(const QRegion &rgn)

Это перегруженный метод.

Этот вариант перерисовывает область rgn внутри виджета.

void QWidget::updateGeometry()

Уведомляет систему макетов, что этот виджет изменился и, возможно, требует изменения геометрии.

Вызовите эту функцию, если изменились sizeHint() или sizePolicy().

Для явно скрытых виджетов updateGeometry() является пустой операцией. Система макетов будет уведомлена, как только виджет будет показан.

[protected slot] void QWidget::updateMicroFocus()

Обновляет микрофокус виджета.

QRegion QWidget::visibleRegion() const

Возвращает область, где могут происходить события отрисовки, не затенённая другими виджетами.

Для видимых виджетов это приблизительная область, не закрытая другими виджетами; в противном случае это пустая область.

Функция repaint() вызывает эту функцию при необходимости, поэтому, как правило, её вызывать не нужно.

[virtual protected] void QWidget::wheelEvent(QWheelEvent *event)

Обработчик событий для события event, который может быть переопределен в подклассе для обработки событий прокрутки для виджета.

Если вы переопределяете этот обработчик, очень важно отклонить событие, если вы его не обрабатываете, чтобы родительский виджет мог его интерпретировать.

По умолчанию событие игнорируется.

См. также QEvent::ignore(), QEvent::accept(), event() и QWheelEvent.

WId QWidget::winId() const

Возвращает идентификатор окна виджета в системе окон.

В принципе, это портабельно, но если вы его используете, вы, вероятно, собираетесь сделать что-то непортабельное. Будьте осторожны.

Если виджет не является родным (чужеродный) и на нём вызывается winId(), этому виджету будет предоставлен родной дескриптор.

Это значение может меняться во время выполнения. Событие типа QEvent::WinIdChange будет отправлено виджету после изменения идентификатора окна в системе окон.

См. также find().

QWidget *QWidget::window() const

Возвращает окно для этого виджета, т. е. следующий родительский виджет, у которого есть (или мог бы быть) фрейм в системе окон.

Если виджет является окном, возвращается сам виджет.

Типичное использование — изменение заголовка окна:

aWidget->window()->setWindowTitle("New Window Title");

См. также isWindow().

QWindow *QWidget::windowHandle() const

Если это родной виджет, возвращает связанное QWindow. В противном случае возвращает null.

К родным виджетам относятся виджеты верхнего уровня, QGLWidget и дочерние виджеты, на которых был вызван winId().

Эта функция была добавлена в Qt 5.0.

См. также winId().

[signal] void QWidget::windowIconChanged(const QIcon &icon)

Этот сигнал испускается, когда иконка окна изменена, с новой иконкой в качестве аргумента.

Эта функция была добавлена в Qt 5.2.

Примечание: Сигнал уведомления для свойства windowIcon.

QString QWidget::windowRole() const

Возвращает роль окна или пустую строку.

См. также setWindowRole(), windowIcon и windowTitle.

Qt::WindowStates QWidget::windowState() const

Возвращает текущее состояние окна. Состояние окна — это логическое ИЛИ комбинация Qt::WindowState: Qt::WindowMinimized, Qt::WindowMaximized, Qt::WindowFullScreen и Qt::WindowActive.

См. также Qt::WindowState и setWindowState().

[signal] void QWidget::windowTitleChanged(const QString &title)

Этот сигнал излучается, когда заголовок окна изменён, с новым title в качестве аргумента.

Эта функция была добавлена в Qt 5.2.

Примечание: Сигнал уведомления для свойства windowTitle.

Qt::WindowType QWidget::windowType() const

Возвращает тип окна данного виджета. Это идентично windowFlags() & Qt::WindowType_Mask.

См. также windowFlags.

Документация макросов

QWIDGETSIZE_MAX

Определяет максимальный размер объекта QWidget.

Наибольший разрешённый размер для виджета — QSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX), то есть QSize (16777215,16777215).

См. также QWidget::setMaximumSize().

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.12/qwidget.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API