Spec-Zone.ru › Qt 5.13

Класс QWidget

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

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

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

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

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

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

Свойства

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

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

QWidget(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())
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 курсор() const
WId effectiveWinId() const
void ensurePolished() const
Qt::FocusPolicy focusPolicy() const
QWidget * focusProxy() const
QWidget * focusWidget() const
const QFont & шрифт() const
QFontInfo fontInfo() const
QFontMetrics fontMetrics() const
QPalette::ColorRole foregroundRole() const
QRect frameGeometry() const
QSize frameSize() const
const QRect & geometry() const
void getContentsMargins(int *left, int *top, int *right, int *bottom) const
QPixmap grab(const QRect &rectangle = QRect(QPoint(0, 0), QSize(-1, -1)))
void grabGesture(Qt::GestureType gesture, Qt::GestureFlags flags = Qt::GestureFlags())
void grabKeyboard()
void grabMouse()
void grabMouse(const QCursor &cursor)
int grabShortcut(const QKeySequence &key, Qt::ShortcutContext context = Qt::WindowShortcut)
QGraphicsEffect * graphicsEffect() const
QGraphicsProxyWidget * graphicsProxyWidget() const
bool hasEditFocus() const
bool hasFocus() const
virtual bool hasHeightForWidth() const
bool hasMouseTracking() const
bool hasTabletTracking() const
int height() const
virtual int heightForWidth(int w) const
Qt::InputMethodHints inputMethodHints() const
virtual QVariant inputMethodQuery(Qt::InputMethodQuery query) const
void insertAction(QAction *before, QAction *action)
void insertActions(QAction *before, QList<QAction *> actions)
bool isActiveWindow() const
bool isAncestorOf(const QWidget *child) const
bool isEnabled() const
bool isEnabledTo(const QWidget *ancestor) const
bool isFullScreen() const
bool isHidden() const
bool isMaximized() const
END_OF_DOCUMENT_MARKER
bool минимизирован() const
bool являетсяМодальным() const
bool видим() const
bool видимДля(const QWidget *ancestor) const
bool являетсяОкном() const
bool изменёнВОкне() const
QLayout * макет() const
Qt::LayoutDirection направлениеМакет() const
QLocale языковойРегион() const
QPoint отобразитьОт(const QWidget *parent, const QPoint &pos) const
QPoint отобразитьОтГлобали(const QPoint &pos) const
QPoint отобразитьОтРодителя(const QPoint &pos) const
QPoint отобразитьВ(const QWidget *parent, const QPoint &pos) const
QPoint отобразитьВГлобали(const QPoint &pos) const
QPoint отобразитьВРодителя(const QPoint &pos) const
QRegion маска() const
int максимальнаяВысота() const
QSize максимальныйРазмер() const
int максимальнаяШирина() const
int минимальнаяВысота() const
QSize минимальныйРазмер() const
virtual QSize минимальныйРекомендуемыйРазмер() const
int минимальнаяШирина() const
void переместить(const QPoint &)
void переместить(int x, int y)
QWidget * роднойРодительскийВиджет() const
QWidget * следующийВЦепочкеФокуса() const
QRect нормальнаяГеометрия() const
void переопределитьФлагиОкна(Qt::WindowFlags flags)
const QPalette & палитра() const
QWidget * родительскийВиджет() const
QPoint позиция() const
QWidget * предыдущийВЦепочкеФокуса() const
QRect прямоугольник() const
void отпуститьКлавиатуру()
void отпуститьМышь()
void отпуститьСокращение(int id)
void удалитьДействие(QAction *action)
void отобразить(QPaintDevice *target, const QPoint &targetOffset = QPoint(), const QRegion &sourceRegion = QRegion(), QWidget::RenderFlags renderFlags = RenderFlags(DrawWindowBackground | DrawChildren))
void отобразить(QPainter *painter, const QPoint &targetOffset = QPoint(), const QRegion &sourceRegion = QRegion(), QWidget::RenderFlags renderFlags = RenderFlags(DrawWindowBackground | DrawChildren))
void перерисовать(int x, int y, int w, int h)
void перерисовать(const QRect &rect)
void перерисовать(const QRegion &rgn)
void изменитьРазмер(const QSize &)
void изменитьРазмер(int w, int h)
bool восстановитьГеометрию(const QByteArray &geometry)
QByteArray сохранитьГеометрию() const
void прокрутить(int dx, int dy)
void прокрутить(int dx, int dy, const QRect &r)
void разрешитьПадения(bool on)
void доступноеОписание(const QString &description)
void доступноеИмя(const QString &name)
void установитьАтрибут(Qt::WidgetAttribute attribute, bool on = true)
void автозаполнятьФон(bool enabled)
void установитьЦветФона(QPalette::ColorRole role)
void установитьБазовыйРазмер(const QSize &)
void установитьБазовыйРазмер(int basew, int baseh)
void установитьПоляСодержимого(int left, int top, int right, int bottom)
void установитьПоляСодержимого(const QMargins &margins)
void установитьПолитикуКонтекстногоМеню(Qt::ContextMenuPolicy policy)
void setCursor(const QCursor &)
void setEditFocus(bool enable)
void setFixedHeight(int h)
void setFixedSize(const QSize &s)
void setFixedSize(int w, int h)
void setFixedWidth(int w)
void setFocus(Qt::FocusReason reason)
void setFocusPolicy(Qt::FocusPolicy policy)
void setFocusProxy(QWidget *w)
void setFont(const QFont &)
void setForegroundRole(QPalette::ColorRole role)
void setGeometry(const QRect &)
void setGeometry(int x, int y, int w, int h)
void setGraphicsEffect(QGraphicsEffect *effect)
void setInputMethodHints(Qt::InputMethodHints hints)
void setLayout(QLayout *layout)
void setLayoutDirection(Qt::LayoutDirection direction)
void setLocale(const QLocale &locale)
void setMask(const QBitmap &bitmap)
void setMask(const QRegion &region)
void setMaximumHeight(int maxh)
void setMaximumSize(const QSize &)
void setMaximumSize(int maxw, int maxh)
void setMaximumWidth(int maxw)
void setMinimumHeight(int minh)
void setMinimumSize(const QSize &)
void setMinimumSize(int minw, int minh)
void setMinimumWidth(int minw)
void setMouseTracking(bool enable)
void setPalette(const QPalette &)
void setParent(QWidget *parent)
void setParent(QWidget *parent, Qt::WindowFlags f)
void setShortcutAutoRepeat(int id, bool enable = true)
void setShortcutEnabled(int id, bool enable = true)
void setSizeIncrement(const QSize &)
void setSizeIncrement(int w, int h)
void setSizePolicy(QSizePolicy)
void setSizePolicy(QSizePolicy::Policy horizontal, QSizePolicy::Policy vertical)
void setStatusTip(const QString &)
void setStyle(QStyle *style)
void setTabletTracking(bool enable)
void setToolTip(const QString &)
void setToolTipDuration(int msec)
void setUpdatesEnabled(bool enable)
void setWhatsThis(const QString &)
void setWindowFilePath(const QString &filePath)
void setWindowFlag(Qt::WindowType flag, bool on = true)
void setWindowFlags(Qt::WindowFlags type)
void setWindowIcon(const QIcon &icon)
void setWindowModality(Qt::WindowModality windowModality)
void setWindowOpacity(qreal level)
void setWindowRole(const QString &role)
void setWindowState(Qt::WindowStates windowState)
void setupUi(QWidget *widget)
QSize size() const
virtual QSize sizeHint() const
QSize sizeIncrement() const
QSizePolicy sizePolicy() const
void stackUnder(QWidget *w)
QString statusTip() const
QStyle * style() const
QString styleSheet() const
bool testAttribute(Qt::WidgetAttribute attribute) const
QString toolTip() const
int toolTipDuration() const
bool underMouse() const
void ungrabGesture(Qt::GestureType gesture)
void unsetCursor()
void unsetLayoutDirection()
void unsetLocale()
void update(int x, int y, int w, int h)
void update(const QRect &rect)
void update(const QRegion &rgn)
void updateGeometry()
bool updatesEnabled() const
QRegion visibleRegion() const
QString whatsThis() const
int width() const
WId winId() const
QWidget * window() const
QString windowFilePath() const
Qt::WindowFlags windowFlags() const
QWindow * windowHandle() const
QIcon windowIcon() const
Qt::WindowModality windowModality() const
qreal windowOpacity() const
QString windowRole() const
Qt::WindowStates windowState() const
QString windowTitle() const
Qt::WindowType windowType() const
int x() const
int y() const

Реализованные общедоступные функции

virtual QPaintEngine * paintEngine() const override

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

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

Сигналы

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

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

QWidget * createWindowContainer(QWindow *window, QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())
QWidget * find(WId id)
QWidget * keyboardGrabber()
QWidget * mouseGrabber()
void setTabOrder(QWidget *first, QWidget *second)

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

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

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

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

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

void updateMicroFocus()

Макросы

QWIDGETSIZE_MAX

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

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

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

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

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

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

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

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

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

A parent widget containing various child widgets.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

События

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Собственные виджеты против чужеродных виджетов

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

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

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

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

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

перечисление QWidget::RenderFlagфлаги QWidget::RenderFlags

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

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

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

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

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

acceptDrops : bool

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

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

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

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

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

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

bool acceptDrops() const
void setAcceptDrops(bool on)

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

accessibleDescription : QString

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

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

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

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

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

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

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

accessibleName : QString

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

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

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

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

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

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

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

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

autoFillBackground : bool

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

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

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

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

Предупреждение: Используйте это свойство с осторожностью в сочетании с 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-beam:

setCursor(Qt::IBeamCursor);

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

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

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

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

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

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

enabled : bool

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

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

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

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

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

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

bool isEnabled() const
void setEnabled(bool)

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

focus : const bool

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

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

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

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

bool hasFocus() const

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

focusPolicy : Qt::FocusPolicy

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

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

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

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

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

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

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

font : QFont

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

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

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

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

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

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

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

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

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

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

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

frameGeometry : const QRect

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

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

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

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

QRect frameGeometry() const

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

frameSize : const QSize

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

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

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

QSize frameSize() const

fullScreen : const bool

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

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

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

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

bool isFullScreen() const

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

geometry : QRect

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

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

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

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

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

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

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

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

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

height : const int

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

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

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

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

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

int height() const

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

inputMethodHints : Qt::InputMethodHints

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

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

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

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

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

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

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

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

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

isActiveWindow : const bool

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

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

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

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

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

bool isActiveWindow() const

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

layoutDirection : Qt::LayoutDirection

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

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

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

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

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

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

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

locale : QLocale

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

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

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

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

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

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

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

maximized : const bool

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

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

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

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

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

bool isMaximized() const

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

maximumHeight : int

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

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

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

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

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

int maximumHeight() const
void setMaximumHeight(int maxh)

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

maximumSize : QSize

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

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

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

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

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

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

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

maximumWidth : int

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

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

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

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

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

int maximumWidth() const
void setMaximumWidth(int maxw)

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

minimized : const bool

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

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

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

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

bool isMinimized() const

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

minimumHeight : int

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

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

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

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

int minimumHeight() const
void setMinimumHeight(int minh)

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

minimumSize : QSize

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

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

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

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

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

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

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

minimumSizeHint : const QSize

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

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

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

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

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

virtual QSize minimumSizeHint() const

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

minimumWidth : int

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

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

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

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

int minimumWidth() const
void setMinimumWidth(int minw)

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

modal : const bool

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

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

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

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

bool isModal() const

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

mouseTracking : bool

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

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

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

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

bool hasMouseTracking() const
void setMouseTracking(bool enable)

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

normalGeometry : const QRect

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

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

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

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

QRect normalGeometry() const

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

palette : QPalette

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

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

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

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

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

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

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

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

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

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

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

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

Если виджет отображается при изменении размера, он получает событие resize (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(). Кнопочные виджеты устанавливают политику размера, чтобы указать, что они могут растягиваться по горизонтали, но фиксируются по вертикали. То же самое относится к виджетам типа lineedit (например, 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 Стиль.

С Qt 4.5 поддержка Qt стилей полностью поддерживает macOS.

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

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

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

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

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

tabletTracking : bool

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

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

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

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

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

bool hasTabletTracking() const
void setTabletTracking(bool enable)

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

toolTip : QString

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

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

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

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

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

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

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

toolTipDuration : int

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

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

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

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

int toolTipDuration() const
void setToolTipDuration(int msec)

См. также toolTip.

updatesEnabled : bool

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

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

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

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

Пример:

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

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

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

bool updatesEnabled() const
void setUpdatesEnabled(bool enable)

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

visible : bool

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

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

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

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

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

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

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

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

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

whatsThis : QString

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

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

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

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

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

width : const int

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

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

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

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

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

int width() const

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

windowFilePath : QString

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

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

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

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

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

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

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

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

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

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

windowFlags : Qt::WindowFlags

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

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

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

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

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

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

windowIcon : QIcon

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

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

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

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

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

void windowIconChanged(const QIcon &icon)

См. также windowTitle.

windowModality : Qt::WindowModality

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

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

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

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

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

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

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

windowModified : bool

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

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

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

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

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

bool isWindowModified() const
void setWindowModified(bool)

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

windowOpacity : double

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

Допустимый диапазон непрозрачности — от 1.0 (полностью непрозрачное) до 0.0 (полностью прозрачное).

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

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

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

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

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

qreal windowOpacity() const
void setWindowOpacity(qreal level)

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

windowTitle : QString

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

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

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

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

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

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

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

void windowTitleChanged(const QString &title)

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

x : const int

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

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

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

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

int x() const

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

y : const int

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

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

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

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

int y() const

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

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

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

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

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

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

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

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

См. также windowFlags.

[slot] bool QWidget::close()

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

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

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

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

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

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

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

[slot] void QWidget::hide()

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

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

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

[slot] void QWidget::lower()

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

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

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

[slot] void QWidget::raise()

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

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

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

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

[slot] void QWidget::repaint()

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

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

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

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

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

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

См. документацию по enabled для получения дополнительной информации.

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

[slot] void QWidget::setFocus()

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

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

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

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

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

[slot] void QWidget::show()

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

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

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

[slot] void QWidget::showFullScreen()

Отображает виджет в полноэкранном режиме.

Вызов этой функции затрагивает только окна.

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

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

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

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

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

[slot] void QWidget::showMaximized()

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

Вызов этой функции затрагивает только окна.

В X11 эта функция может не работать должным образом с некоторыми диспетчерами окон. См. документацию по Геометрии окна для объяснения.

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

[slot] void QWidget::showMinimized()

Отображает виджет минимизированным, в виде значка.

Вызов этой функции затрагивает только окна.

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

[slot] void QWidget::showNormal()

Восстанавливает виджет после максимизации или минимизации.

Вызов этой функции затрагивает только окна.

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

[slot] void QWidget::update()

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

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

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

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

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

[protected slot] void QWidget::updateMicroFocus()

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

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

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

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

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

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

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

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

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

[virtual] QWidget::~QWidget()

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

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

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

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

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

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

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

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

void QWidget::activateWindow()

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

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

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

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

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

void QWidget::addAction(QAction *action)

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

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

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

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

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

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

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

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

void QWidget::adjustSize()

Настраивает размер виджета в соответствии с его содержимым.

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

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

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

QPalette::ColorRole QWidget::backgroundRole() const

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

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

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

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

QBackingStore *QWidget::backingStore() const

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

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

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

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

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

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

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

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

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

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

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

void QWidget::clearFocus()

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

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

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

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

void QWidget::clearMask()

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

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

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

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

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

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

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

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

QMargins QWidget::contentsMargins() const

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

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

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

QRect QWidget::contentsRect() const

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

WId QWidget::effectiveWinId() const

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

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

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

Эта функция была представлена в 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(QEvent *e).

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

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

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

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

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

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

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

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

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

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

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

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

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

[protected] bool QWidget::focusNextChild()

Находит новый виджет для передачи фокуса клавиатуры (как для нажатия Tab) и возвращает true, если новый виджет найден, или false, если нет.

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

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

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

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

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

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

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

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

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

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

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

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

[protected] bool QWidget::focusPreviousChild()

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

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

QWidget *QWidget::focusProxy() const

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

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

QWidget *QWidget::focusWidget() const

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

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

QFontInfo QWidget::fontInfo() const

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

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

QFontMetrics QWidget::fontMetrics() const

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

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

QPalette::ColorRole QWidget::foregroundRole() const

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

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

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

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

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 = Qt::GestureFlags())

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

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

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

void QWidget::grabKeyboard()

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

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

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

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

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

void QWidget::grabMouse()

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

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

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

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

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

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

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

void QWidget::grabMouse(const QCursor &cursor)

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

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

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

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

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

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

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

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

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

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

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

QGraphicsEffect *QWidget::graphicsEffect() const

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

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

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

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

QGraphicsProxyWidget *QWidget::graphicsProxyWidget() const

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

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

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

bool QWidget::hasEditFocus() const

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

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

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

[virtual] bool QWidget::hasHeightForWidth() const

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Это имеет место, если ни сам виджет, ни любой родитель до, но не включая 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()

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

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

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

QLayout *QWidget::layout() const

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

QRegion QWidget::mask() const

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

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

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

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

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

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

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

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

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

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

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

[static] QWidget *QWidget::mouseGrabber()

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

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

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

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

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

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

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

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

См. также setMouseTracking(), mousePressEvent(), mouseReleaseEvent(), mouseDoubleClickEvent(), event(), QMouseEvent и Пример 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

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

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

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

QWidget *QWidget::nextInFocusChain() const

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Многие виджеты могут просто перерисовать всю свою поверхность, когда их об этом просят, но некоторые медленные виджеты нуждаются в оптимизации, перерисовывая только запрошенную область: QPaintEvent::region(). Эта оптимизация скорости не изменяет результат, так как рисование обрезается до этой области во время обработки события. Например, QListView и QTableView это делают.

Qt также пытается ускорить отрисовку, объединяя несколько событий отрисовки в одно. Когда update() вызывается несколько раз или система окон отправляет несколько событий отрисовки, Qt объединяет эти события в одно событие с большей областью (см. QRegion::united()). Функция repaint() не допускает этой оптимизации, поэтому мы рекомендуем использовать update() всякий раз, когда это возможно.

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

Фон можно установить с помощью setBackgroundRole() и setPalette().

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

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

Предупреждение: Если вы используете пользовательский движок отрисовки без подсистемы хранения Qt, необходимо установить Qt::WA_PaintOnScreen. В противном случае QWidget::paintEngine() никогда не будет вызван; вместо этого будет использоваться подсистема хранения.

См. также event(), repaint(), update(), QPainter, QPixmap, QPaintEvent и Пример аналоговых часов.

QWidget *QWidget::parentWidget() const

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

QWidget *QWidget::previousInFocusChain() const

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

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

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

void QWidget::releaseKeyboard()

Отпускает захват клавиатуры.

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

void QWidget::releaseMouse()

Отпускает захват мыши.

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

void QWidget::releaseShortcut(int id)

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

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

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

void QWidget::removeAction(QAction *action)

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

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

void QWidget::render(QPaintDevice *target, const QPoint &targetOffset = QPoint(), const QRegion &sourceRegion = QRegion(), QWidget::RenderFlags renderFlags = RenderFlags(DrawWindowBackground | DrawChildren))

Отображает sourceRegion этого виджета в target, используя renderFlags для определения способа отображения. Отрисовка начинается в targetOffset в target. Например:

QPixmap pixmap(widget->size());
widget->render(&pixmap);

Если sourceRegion является нулевой областью, эта функция будет использовать QWidget::rect() в качестве области, то есть весь виджет.

Убедитесь, что вы вызвали QPainter::end() для активного отрисовщика устройства target (если таковой имеется) перед отрисовкой. Например:

QPainter painter(this);
...
painter.end();
myWidget->render(this);

Примечание: Чтобы получить содержимое QOpenGLWidget, используйте QOpenGLWidget::grabFramebuffer() вместо этого.

Примечание: Чтобы получить содержимое QGLWidget (устаревший), используйте QGLWidget::grabFrameBuffer() или QGLWidget::renderPixmap() вместо этого.

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

void QWidget::render(QPainter *painter, const QPoint &targetOffset = QPoint(), const QRegion &sourceRegion = QRegion(), QWidget::RenderFlags renderFlags = RenderFlags(DrawWindowBackground | DrawChildren))

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

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

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

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

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

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

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

Этот вариант перерисовывает прямоугольник (x, y, w, h) внутри виджета.

Если w отрицательно, он заменяется на width() - x, а если h отрицательно, то на height() - y.

void QWidget::repaint(const QRect &rect)

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

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

void QWidget::repaint(const QRegion &rgn)

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

Этот вариант перерисовывает область rgn внутри виджета.

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

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

Это соответствует resize(QSize(w, h)).

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

[virtual protected] void QWidget::resizeEvent(QResizeEvent *event)

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

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

См. также moveEvent(), event(), resize(), QResizeEvent, paintEvent() и Пример "Рисования".

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

END_OF_DOCUMENT_MARKER

void QWidget::scroll(int dx, int dy)

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

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

Поскольку виджеты по умолчанию передают содержимое своих родителей, вам нужно установить свойство autoFillBackground или использовать setAttribute(), чтобы установить атрибут Qt::WA_OpaquePaintEvent, чтобы сделать виджет непрозрачным.

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

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

void QWidget::scroll(int dx, int dy, const QRect &r)

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

Этот вариант прокручивает только область r и не перемещает дочерние виджеты.

Если r пуста или неверна, результат не определён.

См. также QScrollArea.

void QWidget::setAttribute(Qt::WidgetAttribute attribute, bool on = true)

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

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

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

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

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

Если role равна QPalette::NoRole, то виджет наследует роль фона от родителя.

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

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

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

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

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

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

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

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

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

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

void QWidget::setContentsMargins(const QMargins &margins)

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

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

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

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

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

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

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.

void QWidget::setFocusProxy(QWidget *w)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

void QWidget::setGraphicsEffect(QGraphicsEffect *effect)

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

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

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

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

Примечание: Эта функция применит эффект к себе и всем своим дочерним виджетам.

Примечание: Графические эффекты не поддерживаются для виджетов на основе OpenGL, таких как QGLWidget, QOpenGLWidget и QQuickWidget.

Эта функция была добавлена в Qt 4.6.

См. также graphicsEffect().

void QWidget::setLayout(QLayout *layout)

Устанавливает менеджер компоновки для этого виджета на layout.

Если на этом виджете уже установлен менеджер компоновки, QWidget не позволит установить другой. Сначала необходимо удалить существующий менеджер компоновки (возвращаемый методом layout()), прежде чем можно вызвать setLayout() с новой компоновкой.

Если layout является менеджером компоновки на другом виджете, setLayout() переместит компоновку и сделает её менеджером компоновки для этого виджета.

Пример:

    QVBoxLayout *layout = new QVBoxLayout;
    layout->addWidget(formWidget);
    setLayout(layout);

Альтернативой вызову этой функции является передача этого виджета в конструктор компоновки.

QWidget примет владение layout.

См. также layout() и Управление компоновкой.

void QWidget::setMask(const QBitmap &bitmap)

Делает видимыми только те пиксели виджета, для которых в bitmap соответствует бит 1. Если область включает пиксели за пределами rect() виджета, элементы управления системы окон в этой области могут быть или не быть видимыми в зависимости от платформы.

Обратите внимание, что этот эффект может быть медленным, если область достаточно сложная.

Следующий код демонстрирует, как изображение с альфа-каналом может использоваться для создания маски для виджета:

    QLabel topLevelLabel;
    QPixmap pixmap(":/images/tux.png");
    topLevelLabel.setPixmap(pixmap);
    topLevelLabel.setMask(pixmap.mask());

Метка, показанная в этом коде, маскируется с использованием содержащегося в ней изображения, создавая впечатление, что нерегулярно сформированное изображение рисуется непосредственно на экран.

Маскированные виджеты получают события мыши только на своих видимых частях.

См. также mask(), clearMask(), windowOpacity() и Пример часов со скругленными формами.

void QWidget::setMask(const QRegion &region)

Это перегруженный метод.

Делает видимыми только части виджета, которые перекрываются с region. Если область включает пиксели за пределами rect() виджета, элементы управления системы окон в этой области могут быть или не быть видимыми, в зависимости от платформы.

Обратите внимание, что этот эффект может быть медленным, если область достаточно сложная.

См. также windowOpacity.

void QWidget::setMaximumSize(int maxw, int maxh)

Это перегруженный метод.

Эта функция соответствует setMaximumSize(QSize(maxw, maxh)). Устанавливает максимальную ширину в maxw и максимальную высоту в maxh.

Примечание: Метод-сеттер для свойства maximumSize.

void QWidget::setMinimumSize(int minw, int minh)

Это перегруженный метод.

Эта функция соответствует setMinimumSize(QSize(minw, minh)). Устанавливает минимальную ширину в minw и минимальную высоту в minh.

Примечание: Метод-сеттер для свойства minimumSize.

void QWidget::setParent(QWidget *parent)

Устанавливает родительский виджет для текущего виджета на parent и сбрасывает флаги окна. Виджет перемещается в позицию (0, 0) в своем новом родительском элементе.

Если новый родительский виджет находится в другом окне, переместившийся виджет и его дочерние элементы добавляются в конец цепочки табуляции нового родительского виджета в том же внутреннем порядке, что и ранее. Если один из перемещенных виджетов имел фокус клавиатуры, setParent() вызывает clearFocus() для этого виджета.

Если новый родительский виджет находится в том же окне, что и старый родитель, установка родителя не изменяет порядок табуляции или фокус клавиатуры.

Если «новый» родительский виджет совпадает со старым родительским виджетом, эта функция ничего не делает.

Примечание: Виджет становится невидимым при изменении родителя, даже если он был ранее видимым. Для повторного отображения виджета необходимо вызвать show().

Предупреждение: Очень маловероятно, что вам когда-либо понадобится эта функция. Если у вас есть виджет, динамически меняющий свое содержимое, гораздо проще использовать QStackedWidget.

См. также setWindowFlags().

void QWidget::setParent(QWidget *parent, Qt::WindowFlags f)

Это перегруженный метод.

Эта функция также принимает флаги виджета, f, в качестве аргумента.

void QWidget::setShortcutAutoRepeat(int id, bool enable = true)

Если enable равно true, автоповтор сочетания клавиш с заданным id включен; в противном случае — отключен.

Эта функция была добавлена в Qt 4.2.

См. также grabShortcut() и releaseShortcut().

void QWidget::setShortcutEnabled(int id, bool enable = true)

Если enable равно true, сочетание клавиш с заданным id включено; в противном случае — отключено.

Предупреждение: Вам обычно не нужно использовать эту функцию, так как система сочетаний клавиш Qt автоматически включает/отключает сочетания клавиш при скрытии/отображении виджетов и получении/потере фокуса. Лучше использовать QAction или QShortcut для обработки сочетаний клавиш, так как они проще в использовании, чем эта функция низкого уровня.

См. также grabShortcut() и releaseShortcut().

void QWidget::setSizeIncrement(int w, int h)

Это перегруженный метод.

Устанавливает приращение размера по оси x (ширина) в w и приращение размера по оси y (высота) в h.

Примечание: Метод-сеттер для свойства sizeIncrement.

void QWidget::setSizePolicy(QSizePolicy::Policy horizontal, QSizePolicy::Policy vertical)

Это перегруженный метод.

Устанавливает политику размера виджета на horizontal и vertical, со стандартным растяжением и без высоты относительно ширины.

Примечание: Метод-сеттер для свойства sizePolicy.

См. также QSizePolicy::QSizePolicy().

void QWidget::setStyle(QStyle *style)

Устанавливает графический стиль виджета на style. Владение объектом стиля не передаётся.

Если стиль не задан, виджет использует стиль приложения, QApplication::style() вместо.

Установка стиля виджета не оказывает влияния на существующие или будущие дочерние виджеты.

Предупреждение: Эта функция особенно полезна для демонстрационных целей, где вы хотите продемонстрировать возможности стилизации Qt. Реальные приложения должны избегать её и использовать вместо неё один согласованный графический стиль.

Предупреждение: Стилевые листы Qt в настоящее время не поддерживаются для пользовательских подклассов QStyle. Мы планируем решить эту проблему в будущей версии.

См. также style(), QStyle, QApplication::style() и QApplication::setStyle().

[static] void QWidget::setTabOrder(QWidget *first, QWidget *second)

Устанавливает виджет второй после виджета первый в порядке фокуса.

Это эффективно удаляет виджет второй из его цепочки фокуса и вставляет его после виджета первый.

Обратите внимание, что поскольку порядок табуляции виджета второй изменён, вы должны упорядочить цепочку следующим образом:

setTabOrder(a, b); // a to b
setTabOrder(b, c); // a to b to c
setTabOrder(c, d); // a to b to c to d

не так:

// WRONG
setTabOrder(c, d); // c to d
setTabOrder(a, b); // a to b AND c to d
setTabOrder(b, c); // a to b to c, but not c to d

Если у первого или второго виджета есть прокси фокуса, setTabOrder() правильно подставляет прокси.

Примечание: Начиная с Qt 5.10: Виджет, имеющий дочерний элемент в качестве прокси фокуса, понимается как составной виджет. При установке порядка табуляции между одним или двумя составными виджетами локальный порядок табуляции внутри каждого будет сохранён. Это означает, что если оба виджета являются составными виджетами, результирующий порядок табуляции будет от последнего дочернего элемента внутри первого до первого дочернего элемента внутри второго.

См. также 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(). Для видимых окон изменение происходит немедленно. Например, чтобы переключаться между полноэкранным и обычным режимом, используйте следующий код:

w->setWindowState(w->windowState() ^ Qt::WindowFullScreen);

Для восстановления и активации минимизированного окна (при сохранении его максимализированного и/или полноэкранного состояния) используйте следующее:

w->setWindowState((w->windowState() & ~Qt::WindowMinimized) | Qt::WindowActive);

Вызов этой функции скроет виджет. Вы должны вызвать show(), чтобы снова сделать виджет видимым.

Примечание: На некоторых системах окон Qt::WindowActive не мгновенно и может быть проигнорировано в определённых случаях.

При изменении состояния окна виджет получает changeEvent() типа QEvent::WindowStateChange.

См. также Qt::WindowState и windowState().

void QWidget::setupUi(QWidget *widget)

Настраивает пользовательский интерфейс для указанного виджета widget.

Примечание: Эта функция доступна с виджетами, которые наследуются от описаний пользовательского интерфейса, созданных с помощью uic.

См. также Использование файла UI Designer в вашем приложении.

[virtual protected] void QWidget::showEvent(QShowEvent *event)

Обработчик событий может быть переопределён в подклассе для получения событий отображения виджета, передаваемых в параметре event.

Непроизвольные события отображения отправляются виджетам непосредственно перед их отображением. Последующие непроизвольные события отображения окон.

Примечание: Виджет получает непроизвольные события отображения и скрытия, когда его статус отображения изменяется системой окон, например, непроизвольное событие скрытия при минимизации окна пользователем и непроизвольное событие отображения при его восстановлении. После получения непроизвольного события скрытия виджет по-прежнему считается видимым в смысле isVisible().

См. также visible, event() и QShowEvent.

void QWidget::stackUnder(QWidget *w)

Размещает виджет под w в стеке родительского виджета.

Для работы виджет и w должны быть братьями.

См. также raise() и lower().

QStyle *QWidget::style() const

См. также QWidget::setStyle(), QApplication::setStyle() и QApplication::style().

[virtual protected] void QWidget::tabletEvent(QTabletEvent *event)

Этот обработчик событий event может быть переопределён в подклассе для получения событий планшета для виджета.

Если вы переопределяете этот обработчик, очень важно ignore() событие, если вы его не обрабатываете, чтобы родительский виджет мог интерпретировать его.

По умолчанию обработчик игнорирует событие.

Если отслеживание планшета выключено, события перемещения планшета происходят только если стилус находится в контакте с планшетом или нажата хотя бы одна кнопка стилуса, в то время как стилус перемещается. Если отслеживание планшета включено, события перемещения планшета происходят даже когда стилус находится рядом с планшетом без нажатых кнопок.

См. также QEvent::ignore(), QEvent::accept(), event(), setTabletTracking() и QTabletEvent.

bool QWidget::testAttribute(Qt::WidgetAttribute attribute) const

Возвращает true если атрибут attribute установлен для этого виджета; в противном случае возвращает false.

См. также setAttribute().

bool QWidget::underMouse() const

Возвращает true если виджет находится под курсором мыши; в противном случае возвращает false.

Это значение не обновляется должным образом во время операций перетаскивания.

См. также enterEvent() и leaveEvent().

void QWidget::ungrabGesture(Qt::GestureType gesture)

Отписывает виджет от данного типа gesture

Эта функция была добавлена в Qt 4.6.

См. также grabGesture() и QGestureEvent.

void QWidget::update(int x, int y, int w, int h)

Это перегруженная функция.

Эта версия обновляет прямоугольник (x, y, w, h) внутри виджета.

void QWidget::update(const QRect &rect)

Это перегруженная функция.

Эта версия обновляет прямоугольник rect внутри виджета.

void QWidget::update(const QRegion &rgn)

Это перегруженная функция.

Эта версия перерисовывает область rgn внутри виджета.

void QWidget::updateGeometry()

Уведомляет систему макета, что этот виджет изменился и, возможно, ему нужно изменить геометрию.

Вызовите эту функцию, если изменились sizeHint() или sizePolicy().

Для явно скрытых виджетов updateGeometry() — это пустая операция. Система макета будет уведомлена, как только виджет будет показан.

QRegion QWidget::visibleRegion() const

Возвращает неперекрытую область, где могут происходить события рисования.

Для видимых виджетов это приближение области, не покрытой другими виджетами; в противном случае это пустая область.

Функция repaint() при необходимости вызывает эту функцию, поэтому обычно её вызывать не нужно.

[virtual protected] void QWidget::wheelEvent(QWheelEvent *event)

Этот обработчик событий event может быть переопределён в подклассе для получения событий прокрутки для виджета.

Если вы переопределяете этот обработчик, очень важно ignore() событие, если вы его не обрабатываете, чтобы родительский виджет мог интерпретировать его.

По умолчанию обработчик игнорирует событие.

См. также QEvent::ignore(), QEvent::accept(), event() и QWheelEvent.

WId QWidget::winId() const

Возвращает идентификатор окна виджета в системе окон.

Теоретически портативный, но если вы его используете, вы, вероятно, собираетесь сделать что-то непортативное. Будьте осторожны.

Если виджет неродной (чужой) и вызывается winId(), этому виджету будет предоставлен родной дескриптор.

Это значение может изменяться во время выполнения. После изменения идентификатора виджета в системе окон будет отправлено событие типа QEvent::WinIdChange.

См. также find().

END_OF_DOCUMENT_MARKER

QWidget *QWidget::window() const

Возвращает окно для данного виджета, т.е. следующий родительский виджет, имеющий (или потенциально имеющий) фрейм системы окон.

Если виджет является окном, возвращается сам виджет.

Типичное использование — изменение заголовка окна:

aWidget->window()->setWindowTitle("New Window Title");

См. также isWindow().

QWindow *QWidget::windowHandle() const

Если это нативный виджет, возвращает связанное QWindow. В противном случае возвращает null.

К нативным виджетам относятся виджеты верхнего уровня, QGLWidget и дочерние виджеты, для которых был вызван winId().

Эта функция была добавлена в Qt 5.0.

См. также winId().

QString QWidget::windowRole() const

Возвращает роль окна или пустую строку.

См. также setWindowRole(), windowIcon и windowTitle.

Qt::WindowStates QWidget::windowState() const

Возвращает текущее состояние окна. Состояние окна — это результат побитового ИЛИ значений Qt::WindowState: Qt::WindowMinimized, Qt::WindowMaximized, Qt::WindowFullScreen и Qt::WindowActive.

См. также Qt::WindowState и setWindowState().

Qt::WindowType QWidget::windowType() const

Возвращает тип окна данного виджета. Это идентично windowFlags() & Qt::WindowType_Mask.

См. также windowFlags.

Документация макросов

QWidget::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.13/qwidget.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API