Класс QWidget
Класс QWidget является базовым классом всех объектов пользовательского интерфейса. Подробнее...
| Заголовок: | #include <QWidget> |
| qmake: | QT += widgets |
| Наследует: | QObject и QPaintDevice |
| Наследуется от: | QAbstractButton, QAbstractSlider, QAbstractSpinBox, QAxWidget, QCalendarWidget, QComboBox, QDesignerActionEditorInterface, QDesignerFormWindowInterface, QDesignerObjectInspectorInterface, QDesignerPropertyEditorInterface, QDesignerWidgetBoxInterface, QDesktopWidget, QDialog, QDialogButtonBox, QDockWidget, QFocusFrame, QFrame, QGLWidget, QGroupBox, QHelpSearchQueryWidget, QHelpSearchResultWidget, QKeySequenceEdit, QLineEdit, QMacCocoaViewContainer, QMacNativeWidget, QMainWindow, QMdiSubWindow, QMenu, QMenuBar, QOpenGLWidget, QPrintPreviewWidget, QProgressBar, QQuickWidget, QRubberBand, QSizeGrip, QSplashScreen, QSplitterHandle, QStatusBar, QSvgWidget, QTabBar, QTabWidget, QToolBar, QVideoWidget, QWebEngineView, и QWizardPage |
Общедоступные типы
| Перечисление | RenderFlag { DrawWindowBackground, DrawChildren, IgnoreMask } |
| Флаги | RenderFlags |
Свойства
|
|
- 1 свойство унаследовано от QObject
Открытые функции
| QWidget(QWidget *parent = Q_NULLPTR, Qt::WindowFlags f = Qt::WindowFlags()) | |
| ~QWidget() | |
| bool | acceptDrops() const |
| QString | accessibleDescription() const |
| QString | accessibleName() const |
| QList<QAction *> | actions() const |
| void | activateWindow() |
| void | addAction(QAction *action) |
| void | addActions(QList<QAction *> actions) |
| void | adjustSize() |
| bool | autoFillBackground() const |
| QPalette::ColorRole | backgroundRole() const |
| QBackingStore * | backingStore() const |
| QSize | baseSize() const |
| QWidget * | childAt(int x, int y) const |
| QWidget * | childAt(const QPoint &p) const |
| QRect | childrenRect() const |
| QRegion | childrenRegion() const |
| void | clearFocus() |
| void | clearMask() |
| QMargins | contentsMargins() const |
| QRect | contentsRect() const |
| Qt::ContextMenuPolicy | contextMenuPolicy() const |
| QCursor | cursor() const |
| WId | effectiveWinId() const |
| void | ensurePolished() const |
| Qt::FocusPolicy | focusPolicy() const |
| QWidget * | focusProxy() const |
| QWidget * | focusWidget() const |
| const QFont & | font() const |
| QFontInfo | fontInfo() const |
| QFontMetrics | fontMetrics() const |
| QPalette::ColorRole | foregroundRole() const |
| QRect | frameGeometry() const |
| QSize | frameSize() const |
| const QRect & | geometry() const |
| void | getContentsMargins(int *left, int *top, int *right, int *bottom) const |
| QPixmap | grab(const QRect &rectangle = QRect( QPoint( 0, 0 ), QSize( -1, -1 ) )) |
| void | grabGesture(Qt::GestureType gesture, Qt::GestureFlags flags = 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 |
| int | height() const |
| virtual int | heightForWidth(int w) const |
| Qt::InputMethodHints | inputMethodHints() const |
| virtual QVariant | inputMethodQuery(Qt::InputMethodQuery query) const |
| void | insertAction(QAction *before, QAction *action) |
| void | insertActions(QAction *before, QList<QAction *> actions) |
| bool | isActiveWindow() const |
| bool | isAncestorOf(const QWidget *child) const |
| bool | isEnabled() const |
| bool | isEnabledTo(const QWidget *ancestor) const |
| bool | isFullScreen() const |
| bool | isHidden() const |
| bool | isMaximized() const |
| bool | isMinimized() const |
| bool | isModal() const |
| bool | isVisible() const |
| bool | isVisibleTo(const QWidget *ancestor) const |
| bool | isWindow() const |
| bool | isWindowModified() const |
| QLayout * | layout() const |
| Qt::LayoutDirection | layoutDirection() const |
| QLocale | locale() const |
| QPoint | mapFrom(const QWidget *parent, const QPoint &pos) const |
| QPoint | mapFromGlobal(const QPoint &pos) const |
| QPoint | mapFromParent(const QPoint &pos) const |
| QPoint | mapTo(const QWidget *parent, const QPoint &pos) const |
| QPoint | mapToGlobal(const QPoint &pos) const |
| QPoint | mapToParent(const QPoint &pos) const |
| QRegion | mask() const |
| int | maximumHeight() const |
| QSize | maximumSize() const |
| int | maximumWidth() const |
| int | minimumHeight() const |
| QSize | minimumSize() const |
| virtual QSize | minimumSizeHint() const |
| int | minimumWidth() const |
| void | move(const QPoint &) |
| void | move(int x, int y) |
| QWidget * | nativeParentWidget() const |
| QWidget * | nextInFocusChain() const |
| QRect | normalGeometry() const |
| void | overrideWindowFlags(Qt::WindowFlags flags) |
| const QPalette & | palette() const |
| QWidget * | parentWidget() const |
| QPoint | pos() const |
| QWidget * | previousInFocusChain() const |
| QRect | rect() const |
| void | releaseKeyboard() |
| void | releaseMouse() |
| void | releaseShortcut(int id) |
| void | removeAction(QAction *action) |
| void | render(QPaintDevice *target, const QPoint &targetOffset = QPoint(), const QRegion &sourceRegion = QRegion(), RenderFlags renderFlags = RenderFlags( DrawWindowBackground | DrawChildren )) |
| void | render(QPainter *painter, const QPoint &targetOffset = QPoint(), const QRegion &sourceRegion = QRegion(), RenderFlags renderFlags = RenderFlags( DrawWindowBackground | DrawChildren )) |
| void | repaint(int x, int y, int w, int h) |
| void | repaint(const QRect &rect) |
| void | repaint(const QRegion &rgn) |
| void | resize(const QSize &) |
| void | resize(int w, int h) |
| bool | restoreGeometry(const QByteArray &geometry) |
| QByteArray | saveGeometry() const |
| void | scroll(int dx, int dy) |
| void | scroll(int dx, int dy, const QRect &r) |
| void | setAcceptDrops(bool on) |
| void | setAccessibleDescription(const QString &description) |
| void | setAccessibleName(const QString &name) |
| void | setAttribute(Qt::WidgetAttribute attribute, bool on = true) |
| void | setAutoFillBackground(bool enabled) |
| void | setBackgroundRole(QPalette::ColorRole role) |
| void | setBaseSize(const QSize &) |
| void | setBaseSize(int basew, int baseh) |
| void | setContentsMargins(int left, int top, int right, int bottom) |
| void | setContentsMargins(const QMargins &margins) |
| void | setContextMenuPolicy(Qt::ContextMenuPolicy policy) |
| void | setCursor(const QCursor &) |
| void | setEditFocus(bool enable) |
| void | setFixedHeight(int h) |
| void | setFixedSize(const QSize &s) |
| void | setFixedSize(int w, int h) |
| void | setFixedWidth(int w) |
| void | setFocus(Qt::FocusReason reason) |
| void | setFocusPolicy(Qt::FocusPolicy policy) |
| void | setFocusProxy(QWidget *w) |
| void | setFont(const QFont &) |
| void | setForegroundRole(QPalette::ColorRole role) |
| void | setGeometry(const QRect &) |
| void | setGeometry(int x, int y, int w, int h) |
| void | setGraphicsEffect(QGraphicsEffect *effect) |
| void | setInputMethodHints(Qt::InputMethodHints hints) |
| void | setLayout(QLayout *layout) |
| void | setLayoutDirection(Qt::LayoutDirection direction) |
| void | setLocale(const QLocale &locale) |
| void | setMask(const QBitmap &bitmap) |
| void | setMask(const QRegion ®ion) |
| 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 | setToolTip(const QString &) |
| void | setToolTipDuration(int msec) |
| void | setUpdatesEnabled(bool enable) |
| void | setWhatsThis(const QString &) |
| void | setWindowFilePath(const QString &filePath) |
| 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 |
- 31 общедоступных функций, унаследованных от QObject
- 14 общедоступных функций, унаследованных от QPaintDevice
Публичные слоты
| bool | close() |
| void | hide() |
| void | lower() |
| void | raise() |
| void | repaint() |
| void | setDisabled(bool disable) |
| void | setEnabled(bool) |
| void | setFocus() |
| void | setHidden(bool hidden) |
| void | setStyleSheet(const QString &styleSheet) |
| virtual void | setVisible(bool visible) |
| void | setWindowModified(bool) |
| void | setWindowTitle(const QString &) |
| void | show() |
| void | showFullScreen() |
| void | showMaximized() |
| void | showMinimized() |
| void | showNormal() |
| void | update() |
- 1 public slot inherited from QObject
Сигналы
| void | customContextMenuRequested(const QPoint &pos) |
| void | windowIconChanged(const QIcon &icon) |
| void | windowTitleChanged(const QString &title) |
- 2 signals inherited from QObject
Статические общедоступные члены
| QWidget * | createWindowContainer(QWindow *window, QWidget *parent = Q_NULLPTR, Qt::WindowFlags flags = Qt::WindowFlags()) |
| QWidget * | find(WId id) |
| QWidget * | keyboardGrabber() |
| QWidget * | mouseGrabber() |
| void | setTabOrder(QWidget *first, QWidget *second) |
- 11 static public members inherited from QObject
Защищенные функции
| виртуальный void | actionEvent(QActionEvent *event) |
| виртуальный void | changeEvent(QEvent *event) |
| виртуальный void | closeEvent(QCloseEvent *event) |
| виртуальный void | contextMenuEvent(QContextMenuEvent *event) |
| void | create(WId window = 0, bool initializeWindow = true, bool destroyOldWindow = true) |
| void | destroy(bool destroyWindow = true, bool destroySubWindows = true) |
| виртуальный void | dragEnterEvent(QDragEnterEvent *event) |
| виртуальный void | dragLeaveEvent(QDragLeaveEvent *event) |
| виртуальный void | dragMoveEvent(QDragMoveEvent *event) |
| виртуальный void | dropEvent(QDropEvent *event) |
| виртуальный void | enterEvent(QEvent *event) |
| виртуальный void | focusInEvent(QFocusEvent *event) |
| bool | focusNextChild() |
| виртуальный bool | focusNextPrevChild(bool next) |
| виртуальный void | focusOutEvent(QFocusEvent *event) |
| bool | focusPreviousChild() |
| виртуальный void | hideEvent(QHideEvent *event) |
| виртуальный void | inputMethodEvent(QInputMethodEvent *event) |
| виртуальный void | keyPressEvent(QKeyEvent *event) |
| виртуальный void | keyReleaseEvent(QKeyEvent *event) |
| виртуальный void | leaveEvent(QEvent *event) |
| виртуальный void | mouseDoubleClickEvent(QMouseEvent *event) |
| виртуальный void | mouseMoveEvent(QMouseEvent *event) |
| виртуальный void | mousePressEvent(QMouseEvent *event) |
| виртуальный void | mouseReleaseEvent(QMouseEvent *event) |
| виртуальный void | moveEvent(QMoveEvent *event) |
| виртуальный bool | nativeEvent(const QByteArray &eventType, void *message, long *result) |
| виртуальный void | paintEvent(QPaintEvent *event) |
| виртуальный void | resizeEvent(QResizeEvent *event) |
| виртуальный void | showEvent(QShowEvent *event) |
| виртуальный void | tabletEvent(QTabletEvent *event) |
| виртуальный void | wheelEvent(QWheelEvent *event) |
Реализованные защищенные функции
| виртуальный bool | event(QEvent *event) |
| виртуальный void | initPainter(QPainter *painter) const |
| виртуальный int | metric(PaintDeviceMetric m) const |
- 9 защищенных функций, унаследованных от QObject
- 1 защищенная функция, унаследованная от QPaintDevice
Защищенные слоты
| void | updateMicroFocus() |
Макросы
| QWIDGETSIZE_MAX |
Подробное описание
Класс QWidget — базовый класс всех объектов пользовательского интерфейса.
Виджет — атом пользовательского интерфейса: он получает события мыши, клавиатуры и другие события от системы окон и рисует своё представление на экране. Каждый виджет прямоугольный, и они упорядочены в порядке Z. Виджет обрезается родительским виджетом и виджетами, расположенными спереди него.
Виджет, который не вложен в родительский виджет, называется окном. Обычно окна имеют рамку и строку заголовка, хотя также возможно создать окна без такого оформления, используя соответствующие флаги окна.
Конструктор каждого виджета принимает один или два стандартных аргумента:
-
QWidget *parent = 0— родитель нового виджета. Если это 0 (по умолчанию), новый виджет будет окном. В противном случае он будет дочерним виджетом parent и будет ограничен геометрией parent (если вы не укажете флаг окна Qt::Window). -
Qt::WindowFlags f = 0(где доступно) задаёт флаги окна; по умолчанию значение подходит для почти всех виджетов, но чтобы получить, например, окно без рамки системы окон, необходимо использовать специальные флаги.
У QWidget много функций-членов, но некоторые из них имеют мало прямой функциональности; например, QWidget имеет свойство шрифта, но никогда не использует его сам. Существует много подклассов, которые предоставляют реальную функциональность, таких как QLabel, QPushButton, QListWidget и QTabWidget.
Главные и дочерние виджеты
Виджет без родительского виджета всегда является независимым окном (главный виджет). Для таких виджетов setWindowTitle() и setWindowIcon() устанавливают строку заголовка и значок соответственно.
Неокно-виджеты — дочерние виджеты, отображаемые внутри своих родительских виджетов. Большинство виджетов в Qt в основном полезны как дочерние виджеты. Например, можно отобразить кнопку как окно верхнего уровня, но большинство людей предпочитают размещать свои кнопки внутри других виджетов, таких как QDialog.
На диаграмме показано использование виджета QGroupBox для размещения различных дочерних виджетов в макете, предоставленном QGridLayout. Дочерние виджеты QLabel выделены, чтобы показать их полный размер.
Если вы хотите использовать QWidget для размещения дочерних виджетов, вам обычно нужно добавить макет в родительский QWidget. Подробнее см. Управление макетами.
Составные виджеты
Когда виджет используется в качестве контейнера для группировки ряда дочерних виджетов, он известен как составной виджет. Их можно создать, создав виджет с необходимыми визуальными свойствами — QFrame, например, — и добавив к нему дочерние виджеты, обычно управляемые макетом. На диаграмме показан такой составной виджет, созданный с помощью Qt Designer.
Составные виджеты также можно создать, создав подкласс стандартного виджета, такого как QWidget или QFrame, и добавив необходимый макет и дочерние виджеты в конструктор подкласса. Многие из примеров, предоставленных с Qt, используют этот подход, а он также описан в Qt учебниках.
Пользовательские виджеты и рисование
Так как QWidget является подклассом QPaintDevice, подклассы могут использоваться для отображения пользовательского содержимого, которое составляется с помощью серии операций рисования с экземпляром класса QPainter. Этот подход отличается от подхода в стиле холста, используемого Graphics View Framework, где элементы добавляются в сцену приложением и отрисовываются самим фреймворком.
Каждый виджет выполняет все операции рисования внутри своей функции paintEvent(). Она вызывается всякий раз, когда виджет необходимо перерисовать, либо в результате какого-либо внешнего изменения, либо по запросу приложения.
Пример Аналоговых часов демонстрирует, как простой виджет может обрабатывать события рисования.
Подсказки размера и политики размера
При реализации нового виджета почти всегда полезно переопределить sizeHint() для задания разумного размера по умолчанию для виджета и установки правильной политики размера с помощью setSizePolicy().
По умолчанию составные виджеты, которые не предоставляют подсказки размера, будут масштабироваться в соответствии с требованиями к пространству их дочерних виджетов.
Политика размера позволяет задать хорошее поведение по умолчанию для системы управления макетом, чтобы другие виджеты могли легко содержать и управлять вашим виджетом. Политика размера по умолчанию указывает, что подсказка размера представляет собой предпочтительный размер виджета, и этого часто достаточно для многих виджетов.
Примечание: Размер виджетов верхнего уровня ограничен 2/3 высоты и ширины рабочего стола. Вы можете изменить размер виджета вручную, если эти ограничения недостаточны.
События
Виджеты реагируют на события, которые обычно вызываются действиями пользователя. Qt доставляет события виджетам, вызывая определённые функции-обработчики событий с экземплярами подклассов QEvent, содержащих информацию о каждом событии.
Если ваш виджет содержит только дочерние виджеты, вам, вероятно, не нужно реализовывать какие-либо обработчики событий. Если вы хотите обнаружить щелчок мыши в дочернем виджете, вызовите функцию underMouse() дочернего виджета внутри функции mousePressEvent() виджета.
Пример Рисования реализует более широкий набор событий для обработки перемещения мыши, нажатий кнопок и изменения размера окна.
Вам нужно будет предоставить поведение и содержимое для ваших собственных виджетов, но вот краткий обзор событий, которые относятся к QWidget, начиная с наиболее распространённых:
- paintEvent() вызывается всякий раз, когда виджет необходимо перерисовать. Каждый виджет, отображающий пользовательское содержимое, должен его реализовать. Рисование с помощью QPainter может происходить только в функции paintEvent() или в функции, вызываемой из paintEvent().
- resizeEvent() вызывается при изменении размера виджета.
- mousePressEvent() вызывается при нажатии кнопки мыши, когда курсор мыши находится внутри виджета или когда виджет захватил мышь с помощью grabMouse(). Нажатие мыши без отпускания фактически равносильно вызову grabMouse().
- mouseReleaseEvent() вызывается при отпускании кнопки мыши. Виджет получает события отпускания мыши, когда он получил соответствующее событие нажатия мыши. Это означает, что если пользователь нажимает мышь внутри вашего виджета, затем перемещает мышь куда-то в другое место, прежде чем отпустить кнопку мыши, ваш виджет получает событие отпускания. Есть одно исключение: если появляется всплывающее меню, пока зажата кнопка мыши, это всплывающее меню немедленно захватывает события мыши.
- mouseDoubleClickEvent() вызывается, когда пользователь дважды щелкает мышью внутри виджета. Если пользователь дважды щелкает, виджет получает событие нажатия мыши, событие отпускания мыши, (событие щелчка мыши,), второе событие нажатия, это событие и, наконец, второе событие отпускания мыши. (Также могут быть получены некоторые события перемещения мыши, если мышь не удерживается неподвижно во время этой операции.) Невозможно различить щелчок от двойного щелчка до тех пор, пока не появится второй щелчок. (Это одна из причин, по которой большинство книг по GUI рекомендуют, чтобы двойной щелчок был расширением одиночного щелчка, а не запускал другое действие.)
Виджеты, принимающие входные данные с клавиатуры, должны переопределить несколько дополнительных обработчиков событий:
- keyPressEvent() вызывается всякий раз, когда нажимается клавиша, и снова, когда клавиша удерживается достаточно долго, чтобы произошёл автоматический повтор. Клавиши Tab и Shift+Tab передаются виджету только в том случае, если они не используются механизмами изменения фокуса. Чтобы принудительно обработать эти клавиши вашим виджетом, необходимо переопределить QWidget::event().
- focusInEvent() вызывается, когда виджет получает фокус клавиатуры (предполагается, что вы вызвали setFocusPolicy()). Хорошо себя ведущие виджеты указывают, что они владеют фокусом клавиатуры ясным, но дискретным способом.
- focusOutEvent() вызывается, когда виджет теряет фокус клавиатуры.
Вам может потребоваться также переопределить некоторые менее распространённые обработчики событий:
- mouseMoveEvent() вызывается всякий раз, когда мышь перемещается, удерживая кнопку мыши. Это может быть полезно при операциях перетаскивания. Если вы вызовете setMouseTracking(true), вы получите события перемещения мыши, даже если ни одна кнопка не нажата. (См. также руководство по Перетаскиванию.)
- keyReleaseEvent() вызывается всякий раз, когда отпускается клавиша и когда она удерживается (если клавиша имеет автоматический повтор). В этом случае виджет получит пару событий отпускания и нажатия клавиши для каждого повторения. Клавиши Tab и Shift+Tab передаются виджету только в том случае, если они не используются механизмами изменения фокуса. Чтобы принудительно обработать эти клавиши вашим виджетом, необходимо переопределить QWidget::event().
- wheelEvent() вызывается всякий раз, когда пользователь вращает колесо мыши, когда виджет имеет фокус.
- enterEvent() вызывается, когда мышь входит в экранное пространство виджета. (Это исключает экранное пространство, принадлежащее любому из дочерних виджетов.)
- leaveEvent() вызывается, когда мышь выходит из экранного пространства виджета. Если мышь входит в дочерний виджет, это не вызовет leaveEvent().
- moveEvent() вызывается, когда виджет был перемещен относительно своего родителя.
- closeEvent() вызывается, когда пользователь закрывает виджет (или когда вызывается close()).
В документации по QEvent::Type также описаны некоторые довольно неясные события. Для обработки этих событий вам необходимо напрямую переопределить event().
Стандартная реализация event() обрабатывает Tab и Shift+Tab (для перемещения фокуса клавиатуры) и пересылает большинство других событий одному из более специализированных обработчиков выше.
События и механизм их доставки описаны в Системе событий.
Группы функций и свойств
Стили виджетов
Помимо стандартных стилей виджетов для каждой платформы, виджеты также могут быть стилизованы в соответствии с правилами, указанными в стилевом листе. Эта функция позволяет настроить внешний вид определенных виджетов, чтобы предоставить пользователю визуальные подсказки об их назначении. Например, кнопку можно стилизовать определенным образом, чтобы указать, что она выполняет разрушающее действие.
Использование стилевых листов виджетов подробно описано в документе Стили 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, виджеты-инопланетяне — это виджеты, неизвестные для оконной системы. У них нет родного дескриптора окна. Эта функция значительно ускоряет отрисовку, изменение размеров виджетов и устраняет мерцание.
Если вам требуется старое поведение с родными окнами, вы можете выбрать один из следующих вариантов:
- Используйте
QT_USE_NATIVE_WINDOWS=1в вашей среде. - Установите атрибут Qt::AA_NativeWindows для вашего приложения. Все виджеты будут родными.
- Установите атрибут Qt::WA_NativeWindow для виджетов: сам виджет и все его предки станут родными (если не установлен Qt::WA_DontCreateNativeAncestors).
- Вызовите QWidget::winId, чтобы принудительно сделать окно родным (это подразумевает пункт 3).
- Установите атрибут Qt::WA_PaintOnScreen, чтобы принудительно сделать окно родным (это подразумевает пункт 3).
См. также QEvent, QPainter, QGridLayout и QBoxLayout.
Документация по типам членов
enum QWidget::RenderFlagflags QWidget::RenderFlags
Этот перечисление описывает, как отрисовывать виджет при вызове QWidget::render().
| Постоянная | Значение | Описание |
|---|---|---|
QWidget::DrawWindowBackground |
0x1 |
Если вы включите этот параметр, фон виджета будет отрисован в целевой объект, даже если autoFillBackground не установлен. По умолчанию этот параметр включён. |
QWidget::DrawChildren |
0x2 |
Если вы включите этот параметр, дочерние виджеты будут рекурсивно отрисованы в целевой объект. По умолчанию этот параметр включён. |
QWidget::IgnoreMask |
0x4 |
Если вы включите этот параметр, маска виджета QWidget::mask() будет проигнорирована при отрисовке в целевой объект. По умолчанию этот параметр выключен. |
Это перечисление было представлено или изменено в Qt 4.3.
Тип RenderFlags является типом-синонимом для QFlags<RenderFlag>. Он хранит логическое ИЛИ сочетание значений RenderFlag.
Документация свойств
acceptDrops : bool
Это свойство указывает, включены ли события перетаскивания для этого виджета
Установка этого свойства в значение true сообщает системе, что этот виджет может принимать события перетаскивания.
Если виджет является рабочим столом (windowType() == Qt::Desktop), это может не сработать, если другой приложение использует рабочий стол; вы можете вызвать acceptDrops(), чтобы проверить, произошла ли такая ситуация.
Предупреждение: Не изменяйте это свойство в обработчике события перетаскивания.
По умолчанию это свойство равно false.
Функции доступа:
| bool | acceptDrops() const |
| void | setAcceptDrops(bool on) |
См. также Перетаскивание и отпускание.
accessibleDescription : QString
Это свойство содержит описание виджета, видимое для вспомогательных технологий
Описание виджета для вспомогательных технологий должно описывать, что делает виджет. В то время как accessibleName должно быть коротким и лаконичным (например, Сохранить), описание должно предоставлять больше контекста, например, Сохраняет текущий документ.
Это свойство должно быть локализовано.
По умолчанию это свойство содержит пустую строку, и Qt использует всплывающую подсказку для этой информации.
Функции доступа:
| QString | accessibleDescription() const |
| void | setAccessibleDescription(const QString &description) |
См. также QWidget::accessibleName и QAccessibleInterface::text().
accessibleName : QString
Это свойство содержит имя виджета, видимое для вспомогательных технологий
Это основное имя, с помощью которого вспомогательные технологии, такие как программы чтения с экрана, объявляют этот виджет. Для большинства виджетов установка этого свойства не требуется. Например, для QPushButton будет использоваться текст кнопки.
Важно установить это свойство, когда виджет не предоставляет никакого текста. Например, кнопка, содержащая только значок, должна установить это свойство для работы с программами чтения с экрана. Имя должно быть коротким и эквивалентным визуальной информации, передаваемой виджетом.
Это свойство должно быть локализовано.
По умолчанию это свойство содержит пустую строку.
Функции доступа:
| QString | accessibleName() const |
| void | setAccessibleName(const QString &name) |
См. также QWidget::accessibleDescription и QAccessibleInterface::text().
autoFillBackground : bool
Это свойство указывает, заполняется ли фон виджета автоматически
Если включено, это свойство заставит Qt заполнить фон виджета перед вызовом события рисования. Используемый цвет определяется ролью цвета QPalette::Window из палитры виджета.
Кроме того, окна всегда заполняются цветом QPalette::Window, если не установлены атрибуты WA_OpaquePaintEvent или WA_NoSystemBackground.
Это свойство не может быть отключено (т.е. установлено в false), если у родительского виджета есть статический градиент для фона.
Предупреждение: Используйте это свойство с осторожностью в сочетании со таблицами стилей Qt. Когда у виджета есть таблица стилей с допустимым фоном или изображением границы, это свойство автоматически отключается.
По умолчанию это свойство равно false.
Это свойство было добавлено в Qt 4.1.
Функции доступа:
| bool | autoFillBackground() const |
| void | setAutoFillBackground(bool enabled) |
См. также Qt::WA_OpaquePaintEvent, Qt::WA_NoSystemBackground и Прозрачность и двойная буферизация.
baseSize : QSize
Это свойство содержит базовый размер виджета
Базовый размер используется для вычисления правильного размера виджета, если виджет определяет sizeIncrement().
По умолчанию для вновь созданного виджета это свойство содержит размер с нулевой шириной и высотой.
Функции доступа:
| QSize | baseSize() const |
| void | setBaseSize(const QSize &) |
| void | setBaseSize(int basew, int baseh) |
См. также setSizeIncrement().
childrenRect : const QRect
Это свойство содержит ограничительный прямоугольник дочерних виджетов
Скрытые дочерние виджеты исключаются.
По умолчанию для виджета без дочерних элементов это свойство содержит прямоугольник с нулевой шириной и высотой, расположенный в начале координат.
Функции доступа:
| QRect | childrenRect() const |
См. также childrenRegion() и geometry().
childrenRegion : const QRegion
Это свойство содержит объединенную область, занимаемую дочерними виджетами
Скрытые дочерние виджеты исключаются.
По умолчанию для виджета без дочерних элементов это свойство содержит пустую область.
Функции доступа:
| QRegion | childrenRegion() const |
См. также childrenRect(), geometry() и mask().
contextMenuPolicy : Qt::ContextMenuPolicy
определяет, как виджет отображает контекстное меню
Значение этого свойства по умолчанию — Qt::DefaultContextMenu, что означает вызов обработчика contextMenuEvent(). Другие значения: Qt::NoContextMenu, Qt::PreventContextMenu, Qt::ActionsContextMenu и Qt::CustomContextMenu. При значении Qt::CustomContextMenu генерируется сигнал customContextMenuRequested().
Функции доступа:
| Qt::ContextMenuPolicy | contextMenuPolicy() const |
| void | setContextMenuPolicy(Qt::ContextMenuPolicy policy) |
См. также contextMenuEvent(), customContextMenuRequested() и actions().
cursor : QCursor
Это свойство содержит форму курсора для этого виджета
Курсор мыши примет эту форму при наведении на этот виджет. Список предопределённых объектов курсора см. здесь.
Виджет редактора может использовать курсор в виде I-луча:
setCursor(Qt::IBeamCursor);
Если курсор не задан или после вызова unsetCursor(), используется курсор родительского элемента.
По умолчанию это свойство содержит курсор с формой Qt::ArrowCursor.
Некоторые реализации базовых окон сбросят курсор, если он покинет виджет, даже если мышь захвачена. Если вы хотите установить курсор для всех виджетов, даже при выходе за пределы окна, рассмотрите QApplication::setOverrideCursor().
Функции доступа:
| QCursor | cursor() const |
| void | setCursor(const QCursor &) |
| void | unsetCursor() |
См. также QApplication::setOverrideCursor().
enabled : bool
Это свойство указывает, включён ли виджет
В общем случае активный виджет обрабатывает события клавиатуры и мыши; неактивный виджет — нет. Исключение составляет QAbstractButton.
Некоторые виджеты отображаются по-разному, когда они неактивны. Например, кнопка может отобразить свою метку в сером цвете. Если вашему виджету нужно знать, когда он становится активным или неактивным, вы можете использовать changeEvent() с типом QEvent::EnabledChange.
Деактивация виджета неявно деактивирует всех его дочерние виджеты. Активация соответственно активирует все дочерние виджеты, если они не были явно деактивированы. Невозможно явно активировать дочерний виджет, который не является окном, пока родительский виджет остаётся неактивным.
По умолчанию это свойство равно true.
Функции доступа:
| bool | isEnabled() const |
| void | setEnabled(bool) |
См. также isEnabledTo(), QKeyEvent, QMouseEvent и changeEvent().
focus : const bool
Это свойство указывает, имеет ли данный виджет (или его прокси фокуса) фокус ввода с клавиатуры.
По умолчанию это свойство равно false.
Примечание: Получение значения этого свойства для виджета фактически эквивалентно проверке того, ссылается ли QApplication::focusWidget() на виджет.
Функции доступа:
| bool | hasFocus() const |
См. также setFocus(), clearFocus(), setFocusPolicy() и QApplication::focusWidget().
focusPolicy : Qt::FocusPolicy
Это свойство определяет, как виджет принимает фокус клавиатуры.
Политика равна Qt::TabFocus, если виджет принимает фокус при нажатии клавиши Tab, Qt::ClickFocus, если виджет получает фокус при щелчке, Qt::StrongFocus, если он принимает оба типа фокуса, и Qt::NoFocus (по умолчанию), если он не принимает фокус вообще.
Вы должны включить фокус клавиатуры для виджета, если он обрабатывает события клавиатуры. Обычно это делается из конструктора виджета. Например, конструктор QLineEdit вызывает setFocusPolicy(Qt::StrongFocus).
Если виджет имеет прокси фокуса, то политика фокуса будет передана ему.
Функции доступа:
| Qt::FocusPolicy | focusPolicy() const |
| void | setFocusPolicy(Qt::FocusPolicy policy) |
См. также focusInEvent(), focusOutEvent(), keyPressEvent(), keyReleaseEvent() и enabled.
font : QFont
Это свойство содержит шрифт, в настоящее время установленный для виджета.
Это свойство описывает запрашиваемый шрифт виджета. Шрифт используется стилем виджета при рендеринге стандартных компонентов и доступен для обеспечения согласованности пользовательского виджета с внешним видом платформы. Разные платформы или стили могут определять разные шрифты для приложения.
При назначении нового шрифта виджету свойства этого шрифта комбинируются со стандартным шрифтом виджета для формирования окончательного шрифта виджета. Вы можете вызвать fontInfo(), чтобы получить копию окончательного шрифта виджета. Окончательный шрифт также используется для инициализации шрифта QPainter.
Значение по умолчанию зависит от системной среды. QApplication поддерживает системный/тематический шрифт, который служит значением по умолчанию для всех виджетов. Также могут быть специальные шрифты по умолчанию для определённых типов виджетов. Вы также можете определить шрифты по умолчанию для виджетов, передав пользовательский шрифт и имя виджета в QApplication::setFont(). Наконец, шрифт сопоставляется с базой данных шрифтов Qt для поиска наилучшего соответствия.
QWidget передает явные свойства шрифта от родителя к дочернему виджету. Если вы измените конкретное свойство шрифта и назначите этот шрифт виджету, это свойство будет передано всем дочерним виджетам, перезаписав любые системные значения по умолчанию для этого свойства. Обратите внимание, что шрифты по умолчанию не передаются окнам (см. isWindow()), если не включен атрибут Qt::WA_WindowPropagation.
Передача шрифтов в QWidget аналогична передаче цветовой палитры.
Текущий стиль, который используется для рендеринга содержимого всех стандартных виджетов Qt, может использовать шрифт виджета или в некоторых случаях игнорировать его (частично или полностью). В частности, определённые стили, такие как GTK, Mac, Windows XP и Vista, применяют специальные модификации к шрифту виджета для соответствия собственному внешнему виду платформы. По этой причине назначение свойств шрифту виджета не гарантирует изменения внешнего вида виджета. Вместо этого вы можете применить styleSheet.
Примечание: Если стили Qt используются на том же виджете, что и setFont(), стили будут иметь приоритет в случае конфликта настроек.
Функции доступа:
| const QFont & | font() const |
| void | setFont(const QFont &) |
См. также fontInfo() и fontMetrics().
frameGeometry : const QRect
геометрия виджета относительно родителя, включая рамку окна
См. документацию Геометрия окна для обзора проблем с геометрией окон.
По умолчанию это свойство содержит значение, зависящее от платформы пользователя и геометрии экрана.
Функции доступа:
| QRect | frameGeometry() const |
См. также geometry(), x(), y() и pos().
frameSize : const QSize
Это свойство содержит размер виджета, включая рамку окна.
По умолчанию это свойство содержит значение, зависящее от платформы пользователя и геометрии экрана.
Функции доступа:
| QSize | frameSize() const |
fullScreen : const bool
Это свойство указывает, отображается ли виджет в полноэкранном режиме.
Виджет в полноэкранном режиме занимает всю область экрана и не отображает элементы оформления окна, такие как строка заголовка.
По умолчанию это свойство равно false.
Функции доступа:
| bool | isFullScreen() const |
См. также windowState(), minimized и maximized.
geometry : QRect
Это свойство содержит геометрию виджета относительно родительского виджета, исключая рамку окна.
При изменении геометрии виджет, если он виден, получает событие перемещения (moveEvent()) и/или событие изменения размера (resizeEvent()) немедленно. Если виджет в данный момент не виден, гарантируется, что он получит соответствующие события перед отображением.
Размерная часть корректируется, если она выходит за пределы диапазона, определённого minimumSize() и maximumSize().
Предупреждение: Вызов setGeometry() внутри resizeEvent() или moveEvent() может привести к бесконечной рекурсии.
См. документацию Геометрия окна для обзора проблем с геометрией окон.
По умолчанию это свойство содержит значение, зависящее от платформы пользователя и геометрии экрана.
Функции доступа:
| const QRect & | geometry() const |
| void | setGeometry(int x, int y, int w, int h) |
| void | setGeometry(const QRect &) |
См. также frameGeometry(), rect(), move(), resize(), moveEvent(), resizeEvent(), minimumSize() и maximumSize().
height : const int
Это свойство содержит высоту виджета, исключая рамку окна.
См. документацию Геометрия окна для обзора проблем с геометрией окон.
Примечание: Не используйте эту функцию для поиска высоты экрана на рабочем столе с несколькими экранами. Подробнее см. это примечание.
По умолчанию это свойство содержит значение, зависящее от платформы пользователя и геометрии экрана.
Функции доступа:
| int | height() const |
См. также geometry, width и size.
inputMethodHints : Qt::InputMethodHints
Какие конкретные подсказки для метода ввода имеет виджет.
Это актуально только для виджетов ввода. Он используется методом ввода для получения подсказок о том, как должен работать метод ввода. Например, если установлен флаг Qt::ImhFormattedNumbersOnly, метод ввода может изменить свои визуальные компоненты, чтобы отразить, что можно вводить только числа.
Предупреждение: Некоторые виджеты требуют определённых флагов для корректной работы. Для установки флага используйте w->setInputMethodHints(w->inputMethodHints()|f) вместо w->setInputMethodHints(f).
Примечание: Флаги являются только подсказками, поэтому конкретная реализация метода ввода может их игнорировать. Если вы хотите быть уверены, что вводятся определённые типы символов, вы также должны установить QValidator на виджете.
Значение по умолчанию — Qt::ImhNone.
Это свойство было добавлено в Qt 4.6.
Функции доступа:
| Qt::InputMethodHints | inputMethodHints() const |
| void | setInputMethodHints(Qt::InputMethodHints hints) |
См. также inputMethodQuery().
isActiveWindow : const bool
Это свойство указывает, является ли окно этого виджета активным окном.
Активное окно — это окно, содержащее виджет, у которого есть фокус клавиатуры (окно может всё ещё иметь фокус, если у него нет виджетов или ни один из его виджетов не принимает фокус клавиатуры).
Когда всплывающие окна видимы, это свойство имеет значение true как для активного окна, так и для всплывающего окна.
По умолчанию это свойство false.
Функции доступа:
| bool | isActiveWindow() const |
См. также activateWindow() и QApplication::activeWindow().
layoutDirection : Qt::LayoutDirection
Это свойство содержит направление макета для этого виджета.
По умолчанию это свойство установлено в Qt::LeftToRight.
Когда направление макета устанавливается для виджета, оно распространяется на дочерние виджеты, но не на дочерний виджет, являющийся окном, и не на дочерний виджет, для которого явно вызван setLayoutDirection(). Кроме того, дочерние виджеты, добавленные после вызова setLayoutDirection() для родительского виджета, не наследуют направление макета родителя.
Этот метод больше не влияет на направление вывода текста с Qt 4.7.
Функции доступа:
| Qt::LayoutDirection | layoutDirection() const |
| void | setLayoutDirection(Qt::LayoutDirection direction) |
| void | unsetLayoutDirection() |
См. также QApplication::layoutDirection.
locale : QLocale
Это свойство содержит локаль виджета.
Пока не установлена специальная локаль, это либо локаль родителя, либо (если этот виджет — виджет верхнего уровня) — локаль по умолчанию.
Если виджет отображает даты или числа, они должны быть отформатированы с использованием локали виджета.
Это свойство было добавлено в Qt 4.3.
Функции доступа:
| QLocale | locale() const |
| void | setLocale(const QLocale &locale) |
| void | unsetLocale() |
См. также QLocale и QLocale::setDefault().
maximized : const bool
Это свойство указывает, является ли этот виджет максимализированным.
Это свойство актуально только для окон.
Примечание: Из-за ограничений некоторых систем окон это свойство не всегда сообщает ожидаемые результаты (например, если пользователь на X11 максимизирует окно через менеджер окон, Qt не может отличить это от любого другого изменения размера). Ожидается, что это улучшится по мере развития протоколов менеджеров окон.
По умолчанию это свойство false.
Функции доступа:
| bool | isMaximized() const |
См. также windowState(), showMaximized(), visible, show(), hide(), showNormal() и minimized.
maximumHeight : int
Это свойство содержит максимальную высоту виджета в пикселях.
Это свойство соответствует высоте, хранящейся в свойстве maximumSize.
По умолчанию это свойство имеет значение 16777215.
Примечание: Определение макроса QWIDGETSIZE_MAX ограничивает максимальный размер виджетов.
Функции доступа:
| int | maximumHeight() const |
| void | setMaximumHeight(int maxh) |
См. также maximumSize и maximumWidth.
maximumSize : QSize
Это свойство содержит максимальный размер виджета в пикселях.
Размер виджета нельзя увеличить более максимального размера виджета.
По умолчанию это свойство содержит размер, в котором ширина и высота имеют значения 16777215.
Примечание: Определение макроса QWIDGETSIZE_MAX ограничивает максимальный размер виджетов.
Функции доступа:
| QSize | maximumSize() const |
| void | setMaximumSize(const QSize &) |
| void | setMaximumSize(int maxw, int maxh) |
См. также maximumWidth, maximumHeight, minimumSize и sizeIncrement.
maximumWidth : int
Это свойство содержит максимальную ширину виджета в пикселях.
Это свойство соответствует ширине, хранящейся в свойстве maximumSize.
По умолчанию это свойство имеет значение 16777215.
Примечание: Определение макроса QWIDGETSIZE_MAX ограничивает максимальный размер виджетов.
Функции доступа:
| int | maximumWidth() const |
| void | setMaximumWidth(int maxw) |
См. также maximumSize и maximumHeight.
minimized : const bool
Это свойство указывает, минимизирован ли (свернут) этот виджет.
Это свойство актуально только для окон.
По умолчанию это свойство false.
Функции доступа:
| bool | isMinimized() const |
См. также showMinimized(), visible, show(), hide(), showNormal() и maximized.
minimumHeight : int
Это свойство содержит минимальную высоту виджета в пикселях.
Это свойство соответствует высоте, хранящейся в свойстве minimumSize.
По умолчанию это свойство имеет значение 0.
Функции доступа:
| int | minimumHeight() const |
| void | setMinimumHeight(int minh) |
См. также minimumSize и minimumWidth.
minimumSize : QSize
Это свойство содержит минимальный размер виджета.
Размер виджета нельзя уменьшить меньше минимального размера. Размер виджета принудительно устанавливается в минимальный размер, если текущий размер меньше.
Минимальный размер, установленный этой функцией, переопределит минимальный размер, определённый QLayout. Для сброса минимального размера используйте значение QSize(0, 0).
По умолчанию это свойство содержит размер с нулевой шириной и высотой.
Функции доступа:
| QSize | minimumSize() const |
| void | setMinimumSize(const QSize &) |
| void | setMinimumSize(int minw, int minh) |
См. также minimumWidth, minimumHeight, maximumSize и sizeIncrement.
minimumSizeHint : const QSize
Это свойство содержит рекомендуемый минимальный размер виджета.
Если значение этого свойства — недействительный размер, минимальный размер не рекомендуется.
Реализация по умолчанию minimumSizeHint() возвращает недействительный размер, если для данного виджета нет макета, и возвращает минимальный размер макета в противном случае. Большинство встроенных виджетов переопределяют minimumSizeHint().
QLayout никогда не уменьшит размер виджета до размера меньшего, чем рекомендуемый минимальный размер, если не установлен minimumSize() или политика размера не установлена в QSizePolicy::Ignore. Если установлен minimumSize(), рекомендуемый минимальный размер будет проигнорирован.
Функции доступа:
| virtual QSize | minimumSizeHint() const |
См. также QSize::isValid(), resize(), setMinimumSize() и sizePolicy().
minimumWidth : int
Это свойство содержит минимальную ширину виджета в пикселях.
Это свойство соответствует ширине, содержащейся в свойстве minimumSize.
По умолчанию это свойство имеет значение 0.
Функции доступа:
| int | minimumWidth() const |
| void | setMinimumWidth(int minw) |
См. также minimumSize и minimumHeight.
modal : const bool
Это свойство указывает, является ли виджет модальным виджетом.
Это свойство имеет смысл только для окон. Модальный виджет предотвращает получение ввода виджетами в других окнах.
По умолчанию это свойство равно false.
Функции доступа:
| bool | isModal() const |
См. также isWindow(), windowModality и QDialog.
mouseTracking : bool
Это свойство указывает, включено ли отслеживание мыши для виджета.
Если отслеживание мыши отключено (по умолчанию), виджет получает события перемещения мыши только тогда, когда хотя бы одна кнопка мыши нажата во время перемещения.
Если отслеживание мыши включено, виджет получает события перемещения мыши даже если ни одна кнопка не нажата.
Функции доступа:
| bool | hasMouseTracking() const |
| void | setMouseTracking(bool enable) |
См. также mouseMoveEvent().
normalGeometry : const QRect
Это свойство содержит геометрию виджета, как она будет отображаться при отображении как обычного (не максимального и не полноэкранного) виджета верхнего уровня.
Для дочерних виджетов это свойство всегда содержит пустой прямоугольник.
По умолчанию это свойство содержит пустой прямоугольник.
Функции доступа:
| QRect | normalGeometry() const |
См. также QWidget::windowState() и QWidget::geometry.
palette : QPalette
Это свойство содержит палитру виджета.
Это свойство описывает палитру виджета. Палитра используется стилем виджета при отрисовке стандартных компонентов и служит для обеспечения согласованности пользовательского виджета с внешним видом платформы. Разные платформы или разные стили могут иметь разные палитры.
Когда вы назначаете новую палитру виджету, цветовые роли из этой палитры объединяются с палитрой по умолчанию виджета для формирования конечной палитры виджета. Элемент палитры для роли фона виджета используется для заполнения фона виджета (см. QWidget::autoFillBackground), а роль переднего плана инициализирует QPainter's перо.
Значение по умолчанию зависит от среды системы. QApplication поддерживает системную/тема палитру, которая служит значением по умолчанию для всех виджетов. Также могут быть специальные палитры по умолчанию для определённых типов виджетов (например, в Windows XP и Vista, все классы, которые наследуются от QMenuBar, имеют специальную палитру по умолчанию). Вы также можете определить палитры по умолчанию для виджетов, передав пользовательскую палитру и имя виджета в QApplication::setPalette(). Наконец, стиль всегда имеет возможность полировать палитру при её назначении (см. QStyle::polish()).
QWidget распространяет явные роли палитры от родителя к дочерним элементам. Если вы назначите кисть или цвет определённой роли в палитре и назначите эту палитру виджету, эта роль будет распространена на все дочерние элементы виджета, переопределяя любые системные значения по умолчанию для этой роли. Обратите внимание, что палитры по умолчанию не распространяются на окна (см. isWindow()), если не включен атрибут Qt::WA_WindowPropagation.
Распространение палитры в QWidget аналогично распространению шрифтов.
Текущий стиль, который используется для отображения содержимого всех стандартных виджетов Qt, свободен выбирать цвета и кисти из палитры виджета или, в некоторых случаях, игнорировать палитру (частично или полностью). В частности, такие стили, как GTK, Mac, Windows XP и Vista, зависят от сторонних API для отрисовки содержимого виджетов, и эти стили, как правило, не следуют палитре. Из-за этого назначение ролей в палитре виджета не гарантирует изменение внешнего вида виджета. Вместо этого, вы можете применить styleSheet. Подробнее об этом вы можете узнать в нашей базе знаний по адресу здесь.
Предупреждение: Не используйте эту функцию совместно с Стили Qt. При использовании стилей палитра виджета может настраиваться с помощью «color», «background-color», «selection-color», «selection-background-color» и «alternate-background-color».
Функции доступа:
| const QPalette & | palette() const |
| void | setPalette(const QPalette &) |
См. также QApplication::palette() и QWidget::font().
pos : QPoint
Это свойство содержит положение виджета в его родительском виджете.
Если виджет — окно, положение — это положение виджета на рабочем столе, включая его рамку.
При изменении положения виджет, если он видимый, немедленно получает событие перемещения (moveEvent). Если виджет в данный момент не виден, гарантируется, что он получит событие до того, как будет показан.
По умолчанию это свойство содержит позицию, указывающую на начало координат.
Предупреждение: Вызов move() или setGeometry() внутри moveEvent() может привести к бесконечной рекурсии.
См. документацию по Геометрии окон для обзора проблем с геометрией окон.
Функции доступа:
| QPoint | pos() const |
| void | move(int x, int y) |
| void | move(const QPoint &) |
См. также frameGeometry, size, x() и y().
rect : const QRect
Это свойство содержит внутреннюю геометрию виджета, исключая рамку окна.
Свойство rect равно QRect(0, 0, width(), height()).
См. документацию Геометрия окон для обзора проблем с геометрией окон.
По умолчанию это свойство содержит значение, зависящее от платформы пользователя и геометрии экрана.
Функции доступа:
| QRect | rect() const |
См. также size.
size : QSize
Это свойство содержит размер виджета, исключая рамку окна.
Если виджет виден при изменении размера, он сразу получает событие изменения размера (resizeEvent()). Если виджет не виден, ему гарантированно будет доставлено событие перед отображением.
Размер корректируется, если он выходит за пределы диапазона, определенного свойствами minimumSize() и maximumSize().
По умолчанию это свойство содержит значение, зависящее от платформы пользователя и геометрии экрана.
Предупреждение: Вызов resize() или setGeometry() внутри resizeEvent() может привести к бесконечной рекурсии.
Примечание: Установка размера в QSize(0, 0) приведет к тому, что виджет не будет отображаться на экране. Это также относится к окнам.
Функции доступа:
| QSize | size() const |
| void | resize(int w, int h) |
| void | resize(const QSize &) |
См. также pos, geometry, minimumSize, maximumSize, resizeEvent() и adjustSize().
sizeHint : const QSize
Это свойство содержит рекомендуемый размер для виджета.
Если значение этого свойства является недопустимым размером, рекомендация размера отсутствует.
Реализация sizeHint() по умолчанию возвращает недопустимый размер, если для этого виджета нет макета, и в противном случае возвращает предпочтительный размер макета.
Функции доступа:
| virtual QSize | sizeHint() const |
См. также QSize::isValid(), minimumSizeHint(), sizePolicy(), setMinimumSize() и updateGeometry().
sizeIncrement : QSize
Это свойство содержит приращение размера виджета.
При изменении размера окна размер будет изменяться с шагом sizeIncrement(). width() пикселей по горизонтали и sizeIncrement.height() пикселей по вертикали, с baseSize() в качестве основы. Предпочтительные размеры виджета для неотрицательных целых чисел i и j:
width = baseSize().width() + i * sizeIncrement().width(); height = baseSize().height() + j * sizeIncrement().height();
Обратите внимание, что, хотя вы можете установить приращение размера для всех виджетов, это влияет только на окна.
По умолчанию это свойство содержит размер с нулевой шириной и высотой.
Предупреждение: Приращение размера не имеет эффекта под Windows и может быть проигнорировано диспетчером окон на X11.
Функции доступа:
| QSize | sizeIncrement() const |
| void | setSizeIncrement(const QSize &) |
| void | setSizeIncrement(int w, int h) |
См. также size, minimumSize и maximumSize.
sizePolicy : QSizePolicy
Это свойство содержит поведение макета виджета по умолчанию.
Если существует QLayout, который управляет дочерними элементами этого виджета, используется заданная им политика размера. Если такого QLayout нет, используется результат этой функции.
Политика по умолчанию - Preferred/Preferred, что означает, что виджет может быть изменен по размеру, но предпочитает иметь размер, возвращаемый функцией sizeHint(). Кнопочные виджеты устанавливают политику размера, чтобы указать, что они могут растягиваться по горизонтали, но фиксированы по вертикали. То же самое относится к полям ввода (таким как QLineEdit, QSpinBox или редактируемый QComboBox) и другим виджетам с горизонтальной ориентацией (таким как QProgressBar). QToolButton обычно квадратные, поэтому они позволяют рост в обоих направлениях. Виджеты, поддерживающие разные направления (такие как QSlider, QScrollBar или QHeader), указывают растяжение только в соответствующем направлении. Виджеты, которые могут предоставлять полосы прокрутки (обычно подклассы QScrollArea), как правило, указывают, что они могут использовать дополнительное пространство и могут обойтись меньшим, чем sizeHint().
Функции доступа:
| QSizePolicy | sizePolicy() const |
| void | setSizePolicy(QSizePolicy) |
| void | setSizePolicy(QSizePolicy::Policy horizontal, QSizePolicy::Policy vertical) |
См. также sizeHint(), QLayout, QSizePolicy и updateGeometry().
statusTip : QString
Это свойство содержит подсказку состояния виджета.
По умолчанию это свойство содержит пустую строку.
Функции доступа:
| QString | statusTip() const |
| void | setStatusTip(const QString &) |
См. также toolTip и whatsThis.
styleSheet : QString
Это свойство содержит таблицу стилей виджета.
Таблица стилей содержит текстовое описание настраиваемых элементов стиля виджета, как описано в документе Qt Style Sheets.
Начиная с Qt 4.5, таблицы стилей Qt полностью поддерживают macOS.
Предупреждение: Таблицы стилей Qt в настоящее время не поддерживаются для пользовательских подклассов QStyle. Мы планируем решить эту проблему в будущей версии.
Это свойство было добавлено в Qt 4.2.
Функции доступа:
| QString | styleSheet() const |
| void | setStyleSheet(const QString &styleSheet) |
См. также setStyle(), QApplication::styleSheet и Qt Style Sheets.
toolTip : QString
Это свойство содержит всплывающую подсказку виджета.
Обратите внимание, что всплывающие подсказки по умолчанию отображаются только для виджетов, которые являются дочерними элементами активного окна. Это поведение можно изменить, установив атрибут Qt::WA_AlwaysShowToolTips на окно, а не на виджет с всплывающей подсказкой.
Если вы хотите контролировать поведение всплывающей подсказки, вы можете перехватить функцию event() и поймать событие QEvent::ToolTip (например, если вы хотите настроить область, для которой должна отображаться всплывающая подсказка).
По умолчанию это свойство содержит пустую строку.
Функции доступа:
| QString | toolTip() const |
| void | setToolTip(const QString &) |
См. также QToolTip, statusTip и whatsThis.
toolTipDuration : int
Это свойство содержит время отображения всплывающей подсказки виджета.
Указывает, сколько времени будет отображаться всплывающая подсказка в миллисекундах. Если значение равно -1 (по умолчанию), продолжительность рассчитывается в зависимости от длины подсказки.
Это свойство было добавлено в Qt 5.2.
Функции доступа:
| int | toolTipDuration() const |
| void | setToolTipDuration(int msec) |
См. также toolTip.
updatesEnabled : bool
Это свойство определяет, включены ли обновления.
Включенный виджет получает события отрисовки и имеет системный фон; отключенный виджет — нет. Это также подразумевает, что вызовы update() и repaint() не имеют эффекта, если обновления отключены.
По умолчанию это свойство равно true.
setUpdatesEnabled() обычно используется для отключения обновлений на короткое время, например, чтобы избежать мерцания экрана во время больших изменений. В Qt виджеты обычно не вызывают мерцание экрана, но в X11 сервер может стирать области на экране, когда виджеты скрываются до того, как их могут заменить другие виджеты. Отключение обновлений решает эту проблему.
Пример:
setUpdatesEnabled(false); bigVisualChanges(); setUpdatesEnabled(true);
Отключение виджета подразумевает отключение всех его дочерних элементов. Включение виджета включает все дочерние виджеты, кроме виджетов верхнего уровня или тех, которые были явно отключены. Включение обновлений подразумевает вызов update() для виджета.
Функции доступа:
| bool | updatesEnabled() const |
| void | setUpdatesEnabled(bool enable) |
См. также paintEvent().
visible : bool
Это свойство определяет, виден ли виджет.
Вызов setVisible(true) или show() устанавливает виджет в видимое состояние, если все его родительские виджеты вплоть до окна видны. Если какой-либо предок не виден, виджет не станет видимым, пока все его предки не будут отображены. Если его размер или положение изменились, Qt гарантирует, что виджет получит события перемещения и изменения размера непосредственно перед отображением. Если виджет еще не был изменен в размерах, Qt скорректирует размер виджета до удобного значения с помощью adjustSize().
Вызов setVisible(false) или hide() скрывает виджет явно. Явно скрытый виджет никогда не станет видимым, даже если все его предки станут видимыми, если вы его не отобразите.
Виджет получает события show и hide при изменении его видимости. Между событиями hide и show нет необходимости тратить циклы ЦП на подготовку или отображение информации пользователю. Например, приложение для воспроизведения видео может просто перестать генерировать новые кадры.
Виджет, который каким-то образом скрыт другими окнами на экране, считается видимым. То же самое относится к минимизированным окнам и окнам, которые находятся на другом виртуальном рабочем столе (на платформах, которые поддерживают эту концепцию). Виджет получает спонтанные события show и hide, когда его состояние отображения меняется системой окон, например, спонтанное событие hide, когда пользователь сводит окно в миниатюру, и спонтанное событие show, когда окно восстанавливается.
Вам почти никогда не придется переопределять функцию setVisible(). Если вам необходимо изменить некоторые параметры перед отображением виджета, используйте showEvent() вместо этого. Если вам нужно выполнить отложенную инициализацию, используйте событие Polish, переданное в функцию event().
Функции доступа:
| bool | isVisible() const |
| virtual void | setVisible(bool visible) |
См. также show(), hide(), isHidden(), isVisibleTo(), isMinimized(), showEvent() и hideEvent().
whatsThis : QString
Это свойство содержит текст справки виджета «Что это?».
По умолчанию это свойство содержит пустую строку.
Функции доступа:
| QString | whatsThis() const |
| void | setWhatsThis(const QString &) |
См. также QWhatsThis, QWidget::toolTip и QWidget::statusTip.
width : const int
Это свойство содержит ширину виджета, не включая рамку окна.
См. документацию Геометрия окон для обзора проблем с геометрией окон.
Примечание: Не используйте эту функцию для определения ширины экрана на рабочем столе с несколькими экранами. Прочитайте это примечание для получения подробной информации.
По умолчанию это свойство содержит значение, зависящее от платформы пользователя и геометрии экрана.
Функции доступа:
| int | width() const |
См. также geometry, height и size.
windowFilePath : QString
Это свойство содержит путь к файлу, связанному с виджетом.
Это свойство имеет смысл только для окон. Оно связывает путь к файлу с окном. Если вы установили путь к файлу, но не установили заголовок окна, Qt устанавливает заголовок окна в имя файла указанного пути, полученное с помощью QFileInfo::fileName().
Если заголовок окна установлен в какой-либо момент, то заголовок окна имеет приоритет и будет показан вместо строки пути к файлу.
Кроме того, в macOS это обеспечивает дополнительную возможность установки заместительной иконки для окна, предполагая, что путь к файлу существует.
Если путь к файлу не установлен, это свойство содержит пустую строку.
По умолчанию это свойство содержит пустую строку.
Это свойство было добавлено в Qt 4.4.
Функции доступа:
| QString | windowFilePath() const |
| void | setWindowFilePath(const QString &filePath) |
См. также windowTitle и windowIcon.
windowFlags : Qt::WindowFlags
Флаги окна — это комбинация типа (например, Qt::Dialog) и нуля или более подсказок для системы окон (например, Qt::FramelessWindowHint).
Если виджет имел тип Qt::Widget или Qt::SubWindow и стал окном (Qt::Window, Qt::Dialog и т. д.), он размещается в позиции (0, 0) на рабочем столе. Если виджет является окном и становится Qt::Widget или Qt::SubWindow, он размещается в позиции (0, 0) относительно родительского виджета.
Примечание: Эта функция вызывает setParent(), при изменении флагов окна, что приводит к скрытию виджета. Вы должны вызвать show(), чтобы снова сделать виджет видимым.
Функции доступа:
| Qt::WindowFlags | windowFlags() const |
| void | setWindowFlags(Qt::WindowFlags type) |
См. также windowType() и Пример флагов окна.
windowIcon : QIcon
Это свойство содержит значок виджета.
Это свойство имеет смысл только для окон. Если значок не был установлен, windowIcon() возвращает значок приложения (QApplication::windowIcon()).
Функции доступа:
| QIcon | windowIcon() const |
| void | setWindowIcon(const QIcon &icon) |
Сигнал уведомления:
| void | windowIconChanged(const QIcon &icon) |
См. также windowTitle.
windowModality : Qt::WindowModality
Это свойство определяет, какие окна заблокированы модальным виджетом.
Это свойство имеет смысл только для окон. Модальный виджет предотвращает получение ввода виджетами в других окнах. Значение этого свойства управляет тем, какие окна заблокированы, когда виджет отображается. Изменение этого свойства во время отображения окна не имеет эффекта; необходимо сначала скрыть (hide()) виджет, а затем показать (show()) его снова.
По умолчанию это свойство равно Qt::NonModal.
Это свойство было добавлено в Qt 4.1.
Функции доступа:
| Qt::WindowModality | windowModality() const |
| void | setWindowModality(Qt::WindowModality windowModality) |
См. также isWindow(), QWidget::modal и QDialog.
windowModified : bool
Это свойство указывает, содержит ли документ, отображаемый в окне, несохранённые изменения.
Изменённое окно — это окно, содержимое которого было изменено, но не сохранено на диск. Этот флаг будет иметь различные эффекты в зависимости от платформы. В macOS кнопка закрытия будет иметь изменённый вид; на других платформах в заголовке окна будет отображаться «*» (звёздочка).
Заголовок окна должен содержать заполнитель «[*]», который указывает, где должна отображаться «*». Обычно он должен появляться сразу после имени файла (например, «document1.txt[*] - Текстовый редактор»). Если окно не изменено, этот заполнитель просто удаляется.
Обратите внимание, что если виджет помечен как изменённый, все его предки также будут помечены как изменённые. Однако, если вы вызываете setWindowModified(false) на виджете, это не будет распространяться на его родителя, так как другие дети родителя могли быть изменены.
Функции доступа:
| bool | isWindowModified() const |
| void | setWindowModified(bool) |
См. также windowTitle, Пример приложения, Пример SDI и Пример MDI.
windowOpacity : double
Это свойство содержит уровень непрозрачности окна.
Допустимый диапазон непрозрачности от 1,0 (полностью непрозрачно) до 0,0 (полностью прозрачно).
По умолчанию значение этого свойства равно 1,0.
Эта функция доступна на платформах Embedded Linux, macOS, Windows и X11, поддерживающих расширение Composite.
Эта функция недоступна на Windows CE.
Обратите внимание, что в X11 необходимо запустить менеджер композиции, и атом _NET_WM_WINDOW_OPACITY, специфичный для X11, должен поддерживаться используемым вами менеджером окон.
Предупреждение: Изменение этого свойства с непрозрачного на прозрачный может вызвать событие рисования, которое необходимо обработать перед правильным отображением окна. Это в основном влияет на использование QPixmap::grabWindow(). Также обратите внимание, что полупрозрачные окна обновляются и изменяют размер значительно медленнее, чем непрозрачные окна.
Функции доступа:
| qreal | windowOpacity() const |
| void | setWindowOpacity(qreal level) |
См. также setMask().
windowTitle : QString
Это свойство содержит заголовок окна (заголовок).
Это свойство имеет смысл только для виджетов верхнего уровня, таких как окна и диалоговые окна. Если заголовок не задан, заголовок основан на windowFilePath. Если ни один из этих заголовков не задан, заголовок пустой.
Если используется механизм windowModified, заголовок окна должен содержать заполнитель «[*]», который указывает, где должна отображаться «*». Обычно он должен отображаться сразу после имени файла (например, «document1.txt[*] - Текстовый редактор»). Если свойство windowModified равно false (по умолчанию), заполнитель просто удаляется.
На некоторых платформах (включая Windows и Unix) имя приложения (из QGuiApplication::applicationDisplayName) добавляется в конец заголовка окна, если оно задано. Это делается плагином QPA, поэтому отображается пользователю, но не является частью строки windowTitle.
Функции доступа:
| QString | windowTitle() const |
| void | setWindowTitle(const QString &) |
Сигнал уведомления:
| void | windowTitleChanged(const QString &title) |
См. также windowIcon, windowModified и windowFilePath.
x : const int
Это свойство содержит координату x виджета относительно его родителя, включая рамку окна.
См. документацию Геометрия окна для обзора проблем с геометрией окон.
По умолчанию это свойство имеет значение 0.
Функции доступа:
| int | x() const |
См. также frameGeometry, y и pos.
y : const int
Это свойство содержит координату y виджета относительно его родителя, включая рамку окна.
См. документацию Геометрия окна для обзора проблем с геометрией окон.
По умолчанию это свойство имеет значение 0.
Функции доступа:
| int | y() const |
См. также frameGeometry, x и pos.
Документация по членам-функциям
QWidget::QWidget(QWidget *parent = Q_NULLPTR, Qt::WindowFlags f = Qt::WindowFlags())
Создаёт виджет, являющийся дочерним элементом parent, с флагами виджета, установленными на f.
Если parent равен 0, новый виджет становится окном. Если parent — это другой виджет, этот виджет становится дочерним окном внутри parent. Новый виджет удаляется при удалении его parent.
Аргумент флагов виджета f обычно равен 0, но его можно установить для настройки рамки окна (т.е. parent должен быть 0). Для настройки рамки используйте значение, составленное с помощью побитового ИЛИ любого из флагов окон.
Если вы добавляете дочерний виджет к уже отображаемому виджету, необходимо явно отобразить дочерний виджет, чтобы сделать его видимым.
Обратите внимание, что X11-версия Qt может не поддерживать все комбинации флагов стиля на всех системах. Это связано с тем, что в X11 Qt может только запросить менеджер окон, а менеджер окон может переопределить настройки приложения. В Windows Qt может установить любые флаги, которые вы хотите.
См. также windowFlags.
QWidget::~QWidget()
Уничтожает виджет.
Все дочерние элементы этого виджета удаляются в первую очередь. Приложение завершает работу, если этот виджет является основным виджетом.
[virtual protected] void QWidget::actionEvent(QActionEvent *event)
Обработчик событий вызывается с заданным событием event всякий раз, когда действия виджета изменяются.
См. также addAction(), insertAction(), removeAction(), actions() и QActionEvent.
QList<QAction *> QWidget::actions() const
Возвращает (возможно, пустой) список действий этого виджета.
См. также contextMenuPolicy, insertAction() и removeAction().
void QWidget::activateWindow()
Устанавливает виджет верхнего уровня, содержащий этот виджет, в качестве активного окна.
Активное окно — это видимое окно верхнего уровня, которое имеет фокус ввода с клавиатуры.
Эта функция выполняет ту же операцию, что и щелчок мышью по строке заголовка окна верхнего уровня. В X11 результат зависит от менеджера окон. Если вы хотите убедиться, что окно также расположено поверх других, вы также должны вызвать raise(). Обратите внимание, что окно должно быть видимым, иначе activateWindow() не имеет эффекта.
В Windows, если вы вызываете эту функцию, когда приложение не является активным, оно не станет активным окном. Оно изменит цвет записи в панели задач, чтобы указать, что окно изменилось каким-то образом. Это связано с тем, что Microsoft не разрешает приложению прерывать текущую работу пользователя в другом приложении.
См. также isActiveWindow(), window() и show().
void QWidget::addAction(QAction *action)
Добавляет действие action в список действий этого виджета.
Все QWidgets имеют список QActions, однако они могут быть представлены графически многими различными способами. По умолчанию список QAction (возвращаемый функцией actions()) используется для создания контекстного меню QMenu.
QWidget должен иметь только по одному экземпляру каждого действия, и добавление уже существующего действия не приведёт к дублированию действия в виджете.
Владение action не передаётся этому QWidget.
См. также removeAction(), insertAction(), actions() и QMenu.
void QWidget::addActions(QList<QAction *> actions)
Добавляет действия actions в список действий этого виджета.
См. также removeAction(), QMenu и addAction().
void QWidget::adjustSize()
Настраивает размер виджета для соответствия содержимому.
Эта функция использует sizeHint(), если она валидна, т.е., ширина и высота размерного указания >= 0. В противном случае размер устанавливается в прямоугольник, охватывающий все дочерние виджеты (объединение всех прямоугольников дочерних виджетов).
Для окон также учитывается размер экрана. Если sizeHint() меньше (200, 100) и политика размера – расширяющая, окно будет иметь размер не меньше (200, 100). Максимальный размер окна составляет 2/3 ширины и высоты экрана.
См. также sizeHint() и childrenRect().
QPalette::ColorRole QWidget::backgroundRole() const
Возвращает роль фона виджета.
Роль фона определяет кисть из палитры виджета, которая используется для отрисовки фона.
Если роль фона не установлена явно, виджет наследует роль фона своего родительского виджета.
См. также setBackgroundRole() и foregroundRole().
QBackingStore *QWidget::backingStore() const
Возвращает QBackingStore, в который будет отрисовываться этот виджет.
Эта функция была добавлена в Qt 5.0.
[virtual protected] void QWidget::changeEvent(QEvent *event)
Этот обработчик событий можно переопределить для обработки изменений состояния.
Изменённое состояние в этом событии можно получить через переданный параметр event.
События изменения включают: QEvent::ToolBarChange, QEvent::ActivationChange, QEvent::EnabledChange, QEvent::FontChange, QEvent::StyleChange, QEvent::PaletteChange, QEvent::WindowTitleChange, QEvent::IconTextChange, QEvent::ModifiedChange, QEvent::MouseTrackingChange, QEvent::ParentChange, QEvent::WindowStateChange, QEvent::LanguageChange, QEvent::LocaleChange, QEvent::LayoutDirectionChange, QEvent::ReadOnlyChange.
QWidget *QWidget::childAt(int x, int y) const
Возвращает видимый дочерний виджет в позиции (x, y) в системе координат виджета. Если в указанной позиции нет видимого дочернего виджета, функция возвращает 0.
QWidget *QWidget::childAt(const QPoint &p) const
Это перегруженная функция.
Возвращает видимый дочерний виджет в точке p в собственной системе координат виджета.
void QWidget::clearFocus()
Удаляет фокус ввода с клавиатуры с виджета.
Если у виджета активен фокус, в этот виджет отправляется событие focus out event, чтобы сообщить ему, что он потерял фокус.
Для получения фокуса ввода с клавиатуры этот виджет должен включить настройку фокуса, т.е. вызвать setFocusPolicy().
См. также hasFocus(), setFocus(), focusInEvent(), focusOutEvent(), setFocusPolicy() и QApplication::focusWidget().
void QWidget::clearMask()
Удаляет любую маску, установленную с помощью setMask().
См. также setMask().
[slot] bool QWidget::close()
Закрывает этот виджет. Возвращает true если виджет был закрыт; в противном случае возвращает false.
Сначала виджету отправляется событие QCloseEvent. Виджет скрывается, если он принимает событие закрытия. Если он игнорирует событие, ничего не происходит. По умолчанию реализация QWidget::closeEvent() принимает событие закрытия.
Если у виджета установлен флаг Qt::WA_DeleteOnClose, виджет также удаляется. Событие закрытия отправляется виджету независимо от того, виден ли он или нет.
Сигнал QApplication::lastWindowClosed() генерируется, когда закрывается последнее видимое основное окно (т.е. окно без родителя) с установленным атрибутом Qt::WA_QuitOnClose. По умолчанию этот атрибут установлен для всех виджетов, кроме временных окон, таких как всплывающие окна, окна инструментов и всплывающие меню.
[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 = Q_NULLPTR, Qt::WindowFlags flags = Qt::WindowFlags())
Создает QWidget, который позволяет встроить window в приложение на основе QWidget.
Контейнер окна создается как дочерний элемент для parent и с флагами окна flags.
После того, как окно было встроено в контейнер, контейнер будет управлять геометрией и видимостью окна. Явные вызовы QWindow::setGeometry(), QWindow::show() или QWindow::hide() для встраиваемого окна не рекомендуются.
Контейнер берет на себя владение window. Окно можно удалить из контейнера окна с помощью вызова QWindow::setParent().
Контейнер окна прикрепляется как дочернее окно к родительскому окну верхнего уровня. Когда контейнер окна используется как дочерний элемент QAbstractScrollArea или QMdiArea, он будет создавать нативное окно для каждого виджета в цепочке родителей, чтобы обеспечить правильную укладку и обрезку в этом случае. Создание нативного окна для контейнера окна также обеспечивает правильную укладку и обрезку. Это необходимо сделать до отображения контейнера окна. Приложения с множеством нативных дочерних окон могут иметь проблемы с производительностью.
У контейнера окна есть ряд известных ограничений:
- Порядок стека; Встраиваемое окно будет размещено поверх иерархии виджетов как непрозрачный прямоугольник. Порядок стека нескольких перекрывающихся экземпляров контейнеров окон не определен.
- Интеграция отрисовки; Контейнер окна не взаимодействует с QGraphicsProxyWidget, QWidget::render() или аналогичными функциями.
- Обработка фокуса; Контейнер окна может иметь любую политику фокуса, и он будет делегировать фокус окну с помощью вызова QWindow::requestActivate(). Однако возврат к обычной цепочке фокуса из экземпляра QWindow будет зависеть от реализации экземпляра QWindow самого по себе. Например, при входе в окно на основе Qt Quick с фокусом по клавише Tab, дальнейшие нажатия клавиши Tab, скорее всего, будут циклически переключаться только внутри приложения QML. Кроме того, фактически ли QWindow::requestActivate() предоставляет окну фокус, зависит от платформы.
- Использование многих экземпляров контейнеров окон в приложении на основе QWidget может значительно ухудшить общую производительность приложения.
[signal] void QWidget::customContextMenuRequested(const QPoint &pos)
Этот сигнал излучается, когда политика контекстного меню виджета contextMenuPolicy имеет значение Qt::CustomContextMenu, и пользователь запросил контекстное меню для виджета. Позиция pos — это позиция события контекстного меню, которое получает виджет. Обычно это координаты виджета. Исключением из этого правила являются QAbstractScrollArea и его подклассы, которые отображают событие контекстного меню в координатах viewport().
См. также mapToGlobal(), QMenu и contextMenuPolicy.
[protected] void QWidget::destroy(bool destroyWindow = true, bool destroySubWindows = true)
Освобождает системные ресурсы окна. Удаляет окно виджета, если destroyWindow имеет значение true.
destroy() рекурсивно вызывает себя для всех дочерних виджетов, передавая destroySubWindows в качестве параметра destroyWindow. Для более тонкого управления удалением дочерних виджетов, удалите дочерние виджеты выборочно в первую очередь.
Эта функция обычно вызывается из деструктора QWidget.
[virtual protected] void QWidget::dragEnterEvent(QDragEnterEvent *event)
Этот обработчик событий вызывается, когда происходит перетаскивание и курсор входит в этот виджет. Событие передается в параметре event.
Если событие проигнорировано, виджет не получит никаких событий перемещения перетаскивания.
См. документацию по перетаскиванию для общего обзора предоставления перетаскивания в вашем приложении.
См. также QDrag и QDragEnterEvent.
[virtual protected] void QWidget::dragLeaveEvent(QDragLeaveEvent *event)
Этот обработчик событий вызывается, когда происходит перетаскивание и курсор покидает этот виджет. Событие передается в параметре event.
См. документацию по перетаскиванию для общего обзора предоставления перетаскивания в вашем приложении.
См. также QDrag и QDragLeaveEvent.
[virtual protected] void QWidget::dragMoveEvent(QDragMoveEvent *event)
Этот обработчик событий вызывается, если происходит перетаскивание и происходят следующие условия: курсор входит в этот виджет, курсор перемещается внутри этого виджета или нажата клавиша модификатора на клавиатуре, когда этот виджет имеет фокус. Событие передается в параметре event.
См. документацию по перетаскиванию для общего обзора предоставления перетаскивания в вашем приложении.
См. также QDrag и QDragMoveEvent.
[virtual protected] void QWidget::dropEvent(QDropEvent *event)
Этот обработчик событий вызывается, когда перетаскивание завершается на этом виджете. Событие передается в параметре event.
См. документацию по перетаскиванию для общего обзора предоставления перетаскивания в вашем приложении.
См. также QDrag и QDropEvent.
WId QWidget::effectiveWinId() const
Возвращает эффективный идентификатор окна системы, т. е. идентификатор окна системного родителя виджета.
Если виджет является нативным, эта функция возвращает идентификатор нативного виджета. В противном случае возвращается идентификатор окна первого нативного родительского виджета, т. е. виджета верхнего уровня, содержащего этот виджет.
Примечание: Не рекомендуется хранить это значение, поскольку оно может измениться во время выполнения.
Эта функция была добавлена в Qt 4.4.
См. также nativeParentWidget().
void QWidget::ensurePolished() const
Обеспечивает, что виджет был отполирован QStyle (т. е. имеет правильный шрифт и палитру).
QWidget вызывает эту функцию после того, как он был полностью построен, но перед первым отображением. Вы можете вызвать эту функцию, чтобы убедиться, что виджет отполирован перед выполнением операции, например, для переопределения sizeHint() может потребоваться правильный размер шрифта. Обратите внимание, что эта функция вызывается из стандартной реализации sizeHint().
Отделка полезна для окончательной инициализации, которая должна произойти после вызова всех конструкторов (как базовых классов, так и подклассов).
Если вам нужно изменить некоторые настройки, когда виджет отполирован, переопределите event() и обработайте тип события QEvent::Polish.
Примечание: Функция объявлена как const, чтобы её можно было вызывать из других функций const (например, sizeHint()).
См. также event().
[virtual protected] void QWidget::enterEvent(QEvent *event)
Этот обработчик событий может быть переопределен в подклассе для получения событий входа в виджет, которые передаются в параметре event.
Событие отправляется виджету, когда курсор мыши входит в виджет.
См. также leaveEvent(), mouseMoveEvent() и event().
[virtual protected] bool QWidget::event(QEvent *event)
Переопределено из QObject::event().
Это основной обработчик событий; он обрабатывает событие event. Вы можете переопределить эту функцию в подклассе, но рекомендуется использовать вместо неё специализированные обработчики событий.
События нажатия и отпускания клавиш обрабатываются иначе, чем другие события. event() проверяет нажатия Tab и Shift+Tab и пытается соответствующим образом переместить фокус. Если нет виджета, на который можно переместить фокус (или нажатие клавиши не является Tab или Shift+Tab), event() вызывает keyPressEvent().
Обработка событий мыши и планшета также немного специфична: только когда виджет активирован, event() будет вызывать специализированные обработчики, такие как mousePressEvent(); в противном случае событие будет отброшено.
Эта функция возвращает true , если событие было распознано, в противном случае возвращает false. Если распознанное событие было принято (см. QEvent::accepted), любая дальнейшая обработка, например, распространение события на родительский виджет, прекращается.
См. также closeEvent(), focusInEvent(), focusOutEvent(), enterEvent(), keyPressEvent(), keyReleaseEvent(), leaveEvent(), mouseDoubleClickEvent(), mouseMoveEvent(), mousePressEvent(), mouseReleaseEvent(), moveEvent(), paintEvent(), resizeEvent(), QObject::event() и QObject::timerEvent().
[static] QWidget *QWidget::find(WId id)
Возвращает указатель на виджет с идентификатором/дескриптором окна id.
Тип идентификатора окна зависит от базовой системы окон, см. qwindowdefs.h для фактического определения. Если виджета с этим идентификатором нет, возвращается 0.
[virtual protected] void QWidget::focusInEvent(QFocusEvent *event)
Этот обработчик событий может быть переопределен в подклассе для получения событий фокуса клавиатуры (получение фокуса) для виджета. Событие передается в параметре event.
Для получения событий фокуса виджет обычно должен установить setFocusPolicy() на значение, отличное от Qt::NoFocus. (Обратите внимание, что разработчик приложения может вызвать setFocus() для любого виджета, даже тех, которые обычно не принимают фокус.)
По умолчанию реализация обновляет виджет (за исключением окон, не задающих focusPolicy()).
См. также focusOutEvent(), setFocusPolicy(), keyPressEvent(), keyReleaseEvent(), event() и QFocusEvent.
[protected] bool QWidget::focusNextChild()
Находит новый виджет для передачи фокуса клавиатуры, соответствующий клавише Tab, и возвращает true , если новый виджет найден, или false, если нет.
См. также focusPreviousChild().
[virtual protected] bool QWidget::focusNextPrevChild(bool next)
Находит новый виджет для передачи фокуса клавиатуры, соответствующий клавишам Tab и Shift+Tab, и возвращает true , если новый виджет найден, или false, если нет.
Если next равно true, функция выполняет поиск вперед, если next равно false, поиск выполняется назад.
Иногда вам нужно переопределить эту функцию. Например, веб-браузер может переопределить ее, чтобы переместить свой «текущий активный элемент» вперед или назад, и вызвать focusNextPrevChild() только тогда, когда достигнет последнего или первого элемента на «странице».
Дочерние виджеты вызывают focusNextPrevChild() у своих родительских виджетов, но только окно, содержащее дочерние виджеты, решает, куда перенаправить фокус. Переопределяя эту функцию для объекта, вы получаете контроль над перемещением фокуса для всех дочерних виджетов.
См. также focusNextChild() и focusPreviousChild().
[virtual protected] void QWidget::focusOutEvent(QFocusEvent *event)
Этот обработчик событий может быть переопределен в подклассе для получения событий фокуса клавиатуры (потеря фокуса) для виджета. Событие передается в параметре event.
Для получения событий фокуса виджет обычно должен установить setFocusPolicy() на значение, отличное от Qt::NoFocus. (Обратите внимание, что разработчик приложения может вызвать setFocus() для любого виджета, даже тех, которые обычно не принимают фокус.)
По умолчанию реализация обновляет виджет (за исключением окон, не задающих focusPolicy()).
См. также focusInEvent(), setFocusPolicy(), keyPressEvent(), keyReleaseEvent(), event() и QFocusEvent.
[protected] bool QWidget::focusPreviousChild()
Находит новый виджет для передачи фокуса клавиатуры, соответствующий клавише Shift+Tab, и возвращает true , если новый виджет найден, или false, если нет.
См. также focusNextChild().
QWidget *QWidget::focusProxy() const
Возвращает прокси-виджет фокуса или 0, если прокси-виджета фокуса нет.
См. также setFocusProxy().
QWidget *QWidget::focusWidget() const
Возвращает последний дочерний виджет этого виджета, для которого был вызван setFocus. Для виджетов верхнего уровня это виджет, который получит фокус в случае активации этого окна.
Это не то же самое, что QApplication::focusWidget(), которая возвращает виджет фокуса в текущем активном окне.
QFontInfo QWidget::fontInfo() const
Возвращает информацию о шрифте для текущего шрифта виджета. Эквивалентно QFontInfo(widget->font()).
См. также font(), fontMetrics() и setFont().
QFontMetrics QWidget::fontMetrics() const
Возвращает метрики шрифта для текущего шрифта виджета. Эквивалентно QFontMetrics(widget->font()).
См. также font(), fontInfo() и setFont().
QPalette::ColorRole QWidget::foregroundRole() const
Возвращает роль переднего плана.
Роль переднего плана определяет цвет из палитры виджета, который используется для рисования переднего плана.
Если роль переднего плана не задана явно, функция возвращает роль, контрастирующую с ролью фона.
См. также setForegroundRole() и backgroundRole().
void QWidget::getContentsMargins(int *left, int *top, int *right, int *bottom) const
Возвращает отступы содержимого виджета для left, top, right и bottom.
См. также setContentsMargins() и contentsRect().
QPixmap QWidget::grab(const QRect &rectangle = QRect( QPoint( 0, 0 ), QSize( -1, -1 ) ))
Рендерит виджет в пиксельмапу, ограниченную заданным прямоугольником rectangle. Если у виджета есть дочерние элементы, они также отрисовываются в соответствующих позициях.
Если задан прямоугольник с недопустимым размером (значение по умолчанию), отрисовывается весь виджет.
Эта функция была добавлена в Qt 5.0.
void QWidget::grabGesture(Qt::GestureType gesture, Qt::GestureFlags flags = Qt::GestureFlags())
Подписывает виджет на заданное событие gesture со специфическими flags.
Эта функция была добавлена в Qt 4.6.
См. также ungrabGesture() и QGestureEvent.
void QWidget::grabKeyboard()
Захватывает ввод с клавиатуры.
Этот виджет получает все события клавиатуры до вызова releaseKeyboard(); другие виджеты не получают событий клавиатуры. События мыши не затрагиваются. Используйте grabMouse(), если хотите захватить ввод мыши.
Виджет с фокусом не затрагивается, за исключением того, что он не получает никаких событий клавиатуры. setFocus() перемещает фокус как обычно, но новый виджет с фокусом получает события клавиатуры только после вызова releaseKeyboard().
Если другой виджет в данный момент захватывает ввод с клавиатуры, сначала освобождается захват этого виджета.
См. также releaseKeyboard(), grabMouse(), releaseMouse() и focusWidget().
void QWidget::grabMouse()
Захватывает ввод с мыши.
Этот виджет получает все события мыши до вызова releaseMouse(); другие виджеты не получают событий мыши. События клавиатуры не затрагиваются. Используйте grabKeyboard(), если хотите захватить ввод с клавиатуры.
Предупреждение: Ошибки в приложениях, захватывающих мышь, очень часто блокируют терминал. Используйте эту функцию с большой осторожностью и рассмотрите возможность использования параметра командной строки -nograb, при отладке.
Практически никогда нет необходимости захватывать мышь при работе с Qt, так как Qt разумно захватывает и отпускает ее. В частности, Qt захватывает мышь при нажатии кнопки мыши и удерживает ее до тех пор, пока не будет отпущена последняя кнопка.
Примечание: Захват ввода мыши могут осуществлять только видимые виджеты. Если isVisible() возвращает false для виджета, этот виджет не может вызвать grabMouse().
Примечание: В Windows функция grabMouse() работает только тогда, когда курсор мыши находится внутри окна, принадлежащего процессу. В macOS, функция grabMouse() работает только тогда, когда курсор мыши находится внутри рамки этого виджета.
См. также releaseMouse(), grabKeyboard() и releaseKeyboard().
void QWidget::grabMouse(const QCursor &cursor)
Эта функция перегружает grabMouse().
Захватывает ввод мыши и изменяет форму курсора.
Курсор примет форму cursor (на всё время захвата фокуса мыши) и этот виджет будет единственным, получающим события мыши, пока не будет вызвана функция releaseMouse().
Предупреждение: Захват мыши может заблокировать терминал.
Примечание: См. примечание в QWidget::grabMouse().
См. также releaseMouse(), grabKeyboard(), releaseKeyboard() и setCursor().
int QWidget::grabShortcut(const QKeySequence &key, Qt::ShortcutContext context = Qt::WindowShortcut)
Добавляет в систему ярлыков Qt ярлык, отслеживающий заданную последовательность key в заданном context. Если context равен Qt::ApplicationShortcut, ярлык применяется ко всему приложению. В противном случае он локален для данного виджета (Qt::WidgetShortcut) или для самого окна (Qt::WindowShortcut).
Если ту же последовательность key захватывают несколько виджетов, при её появлении событие QEvent::Shortcut отправляется всем виджетам, к которым оно относится, в неопределённом порядке, но с флагом «неопределённый» (ambiguous) установленным в значение true.
Предупреждение: Обычно вам не нужно использовать эту функцию; вместо этого создавайте QAction с необходимыми сочетаниями клавиш (если вам также нужны аналогичные пункты меню и кнопки панели инструментов) или QShortcut, если вам нужны только сочетания клавиш. Как QAction, так и QShortcut обрабатывают всю фильтрацию событий за вас и предоставляют сигналы, срабатывающие при срабатывании сочетания клавиш, поэтому они намного проще в использовании, чем эта функция низкого уровня.
См. также releaseShortcut() и setShortcutEnabled().
QGraphicsEffect *QWidget::graphicsEffect() const
Функция graphicsEffect возвращает указатель на графический эффект виджета.
Если виджет не имеет графического эффекта, возвращается 0.
Эта функция была добавлена в Qt 4.6.
См. также setGraphicsEffect().
QGraphicsProxyWidget *QWidget::graphicsProxyWidget() const
Возвращает прокси-виджет для соответствующего встроенного виджета в представлении графики; в противном случае возвращает 0.
Эта функция была добавлена в Qt 4.5.
См. также QGraphicsProxyWidget::createProxyForChildWidget() и QGraphicsScene::addWidget().
bool QWidget::hasEditFocus() const
Возвращает true если этот виджет в данный момент имеет фокус редактирования; в противном случае возвращает false.
Эта функция доступна только в Qt для встраиваемой Linux-системы.
См. также setEditFocus() и QApplication::keypadNavigationEnabled().
[virtual] bool QWidget::hasHeightForWidth() const
Возвращает true если предпочтительная высота виджета зависит от его ширины; в противном случае возвращает false.
Эта функция была добавлена в Qt 5.0.
[virtual] int QWidget::heightForWidth(int w) const
Возвращает предпочтительную высоту для этого виджета, учитывая ширину w.
Если у этого виджета есть макет, реализация по умолчанию возвращает предпочтительную высоту макета. Если макета нет, реализация по умолчанию возвращает -1, что указывает на то, что предпочтительная высота не зависит от ширины.
[slot] void QWidget::hide()
Скрывает виджет. Эта функция эквивалентна setVisible(false).
Примечание: Если вы работаете с QDialog или его подклассами и вызываете функцию show() после этой функции, диалог будет отображен в его исходном положении.
См. также hideEvent(), isHidden(), show(), setVisible(), isVisible() и close().
[virtual protected] void QWidget::hideEvent(QHideEvent *event)
Обработчик этого события может быть переопределён в подклассе для получения событий скрытия виджета. Событие передаётся в параметре event.
События скрытия отправляются виджетам сразу после их скрытия.
Примечание: Виджет получает спонтанные события показа и скрытия, когда его статус сопоставления изменяется системой окон, например, спонтанное событие скрытия, когда пользователь сворачивает окно, и спонтанное событие показа, когда окно восстанавливается. После получения спонтанного события скрытия виджет по-прежнему считается видимым в смысле isVisible().
См. также visible, event() и QHideEvent.
[virtual protected] void QWidget::initPainter(QPainter *painter) const
Инициализирует перо, фон и шрифт painter так же, как у данного виджета. Эта функция вызывается автоматически при открытии художника на QWidget.
[virtual protected] void QWidget::inputMethodEvent(QInputMethodEvent *event)
Этот обработчик событий, для события event, может быть переопределён в подклассе для получения событий композиции метода ввода. Этот обработчик вызывается при изменении состояния метода ввода.
Обратите внимание, что при создании пользовательских виджетов редактирования текста атрибут окна Qt::WA_InputMethodEnabled должен быть явно установлен (с помощью функции setAttribute()), чтобы получать события метода ввода.
Реализация по умолчанию вызывает event->ignore(), что отклоняет событие метода ввода. См. документацию по QInputMethodEvent для получения дополнительной информации.
См. также event() и QInputMethodEvent.
[virtual] QVariant QWidget::inputMethodQuery(Qt::InputMethodQuery query) const
Этот метод важен только для виджетов ввода. Он используется методом ввода для запроса набора свойств виджета, чтобы иметь возможность поддерживать сложные операции метода ввода, такие как поддержка окружающего текста и переконвертации.
query указывает, какое свойство запрашивается.
См. также inputMethodEvent(), QInputMethodEvent, QInputMethodQueryEvent и inputMethodHints.
void QWidget::insertAction(QAction *before, QAction *action)
Вставляет действие action в список действий этого виджета перед действием before. Он добавляет действие в конец, если before равен 0 или before не является допустимым действием для этого виджета.
В QWidget должно быть только одно действие каждого типа.
См. также removeAction(), addAction(), QMenu, contextMenuPolicy и actions().
void QWidget::insertActions(QAction *before, QList<QAction *> actions)
Вставляет действия actions в список действий этого виджета перед действием before. Он добавляет действия в конец, если before равен 0 или before не является допустимым действием для этого виджета.
В QWidget может быть не более одного действия каждого типа.
См. также removeAction(), QMenu, insertAction() и contextMenuPolicy.
bool QWidget::isAncestorOf(const QWidget *child) const
Возвращает true если данный виджет является родителем (или прародителем и так далее на любом уровне) заданного child, и оба виджета находятся в одном окне; в противном случае возвращает false.
bool QWidget::isEnabledTo(const QWidget *ancestor) const
Возвращает true если данный виджет станет активным, если ancestor активен; в противном случае возвращает false.
Это имеет место, если ни сам виджет, ни любой его родитель до, но не включая ancestor, не был явно отключен.
isEnabledTo(0) возвращает false, если этот виджет или любой из его предков был явно отключен.
Слово «предок» здесь означает родительский виджет в том же окне.
Поэтому isEnabledTo(0) останавливается на окне этого виджета, в отличие от isEnabled(), которая также учитывает родительские окна.
См. также setEnabled() и enabled.
bool QWidget::isHidden() const
Возвращает true если виджет скрыт, иначе возвращает false.
Скрытый виджет станет видимым только при вызове show() для него. Он не будет автоматически показан, когда показан родитель.
Для проверки видимости используйте !isVisible() вместо этого (обратите внимание на восклицательный знак).
isHidden() подразумевает !isVisible(), но виджет может быть невидимым и не скрытым одновременно. Это относится к виджетам, которые являются дочерними по отношению к виджетам, которые невидимы.
Виджеты скрыты, если:
- они были созданы как независимые окна,
- они были созданы как дочерние элементы видимых виджетов,
- hide() или setVisible(false) был вызван.
bool QWidget::isVisibleTo(const QWidget *ancestor) const
Возвращает true если этот виджет станет видимым, если ancestor показан; в противном случае возвращает false.
Истинное значение имеет место, если ни сам виджет, ни любой родитель до, но не включая ancestor, не был явно скрыт.
Эта функция всё ещё вернёт true, если виджет заслонён другими окнами на экране, но может быть физически виден, если он или они будут перемещены.
isVisibleTo(0) идентично isVisible().
См. также show(), hide() и isVisible().
bool QWidget::isWindow() const
Возвращает true если виджет является независимым окном, в противном случае возвращает false.
Окно — это виджет, который визуально не является дочерним элементом другого виджета и обычно имеет рамку и заголовок окна.
Окно может иметь родительский виджет. Тогда оно будет сгруппировано с родителем и удалено при удалении родителя, минимизировано при минимизации родителя и т.д. Если это поддерживается менеджером окон, у него также будет общая запись в панели задач с родителем.
QDialog и QMainWindow виджеты по умолчанию являются окнами, даже если родительский виджет указан в конструкторе. Это поведение определяется флагом Qt::Window.
См. также window(), isModal() и parentWidget().
[virtual protected] void QWidget::keyPressEvent(QKeyEvent *event)
Этот обработчик событий, для события event, может быть переопределён в подклассе для получения событий нажатия клавиш для виджета.
Виджет должен вызвать setFocusPolicy(), чтобы изначально получить фокус и иметь фокус, чтобы получить событие нажатия клавиши.
Если вы переопределяете этот обработчик, очень важно вызывать реализацию базового класса, если вы не действуете на клавишу.
По умолчанию реализация закрывает всплывающие виджеты, если пользователь нажимает последовательность клавиш для QKeySequence::Cancel (обычно клавиша Escape). В противном случае событие игнорируется, чтобы родительский виджет мог его интерпретировать.
Обратите внимание, что QKeyEvent начинается с isAccepted() == true, поэтому вам не нужно вызывать QKeyEvent::accept() — просто не вызывайте реализацию базового класса, если вы действуете на клавишу.
См. также keyReleaseEvent(), setFocusPolicy(), focusInEvent(), focusOutEvent(), event(), QKeyEvent и Пример Tetrix.
[virtual protected] void QWidget::keyReleaseEvent(QKeyEvent *event)
Этот обработчик событий, для события event, может быть переопределён в подклассе для получения событий отпускания клавиш для виджета.
Виджет должен изначально получить фокус и иметь фокус, чтобы получить событие отпускания клавиши.
Если вы переопределяете этот обработчик, очень важно вызывать реализацию базового класса, если вы не действуете на клавишу.
По умолчанию реализация игнорирует событие, чтобы родительский виджет мог его интерпретировать.
Обратите внимание, что QKeyEvent начинается с isAccepted() == true, поэтому вам не нужно вызывать QKeyEvent::accept() — просто не вызывайте реализацию базового класса, если вы действуете на клавишу.
См. также keyPressEvent(), QEvent::ignore(), setFocusPolicy(), focusInEvent(), focusOutEvent(), event() и QKeyEvent.
[static] QWidget *QWidget::keyboardGrabber()
Возвращает виджет, который в данный момент захватывает ввод с клавиатуры.
Если в этом приложении в данный момент ни один виджет не захватывает ввод с клавиатуры, возвращается 0.
См. также grabMouse() и mouseGrabber().
QLayout *QWidget::layout() const
Возвращает менеджер компоновки, установленный на этом виджете, или 0, если менеджер компоновки не установлен.
Менеджер компоновки задаёт геометрию дочерних виджетов, добавленных в компоновку.
См. также setLayout(), sizePolicy() и Управление компоновкой.
[virtual protected] void QWidget::leaveEvent(QEvent *event)
Этот обработчик событий может быть переопределён в подклассе для получения событий выхода виджета, которые передаются в параметре event.
Событие выхода отправляется виджету, когда курсор мыши покидает виджет.
См. также enterEvent(), mouseMoveEvent() и event().
[slot] void QWidget::lower()
Опускает виджет в низ стека родительского виджета.
После этого вызова виджет будет визуально находиться позади (и, следовательно, будет заслонён) любых перекрывающих его дочерних виджетов.
См. также raise() и stackUnder().
QPoint QWidget::mapFrom(const QWidget *parent, const QPoint &pos) const
Преобразует координату виджета pos из системы координат parent в систему координат этого виджета. parent не должен быть 0 и должен быть родителем вызываемого виджета.
См. также mapTo(), mapFromParent(), mapFromGlobal() и underMouse().
QPoint QWidget::mapFromGlobal(const QPoint &pos) const
Преобразует глобальные экранные координаты pos в координаты виджета.
См. также mapToGlobal(), mapFrom() и mapFromParent().
QPoint QWidget::mapFromParent(const QPoint &pos) const
Преобразует координаты родительского виджета pos в координаты виджета.
То же, что и mapFromGlobal(), если у виджета нет родителя.
См. также mapToParent(), mapFrom(), mapFromGlobal() и underMouse().
QPoint QWidget::mapTo(const QWidget *parent, const QPoint &pos) const
Преобразует координату виджета pos в систему координат parent. parent не должен быть 0 и должен быть родителем вызываемого виджета.
См. также mapFrom(), mapToParent(), mapToGlobal() и underMouse().
QPoint QWidget::mapToGlobal(const QPoint &pos) const
Преобразует координату виджета pos в глобальные экранные координаты. Например, mapToGlobal(QPoint(0,0)) вернёт глобальные координаты левого верхнего пикселя виджета.
См. также mapFromGlobal(), mapTo() и mapToParent().
QPoint QWidget::mapToParent(const QPoint &pos) const
Преобразует координаты виджета pos в координаты родительского виджета.
То же, что и mapToGlobal(), если у виджета нет родителя.
См. также mapFromParent(), mapTo(), mapToGlobal() и underMouse().
QRegion QWidget::mask() const
Возвращает маску, текущую установленную на виджете. Если маска не установлена, возвращается пустая область.
См. также setMask(), clearMask(), QRegion::isEmpty() и Пример часов с формой.
[virtual protected] int QWidget::metric(PaintDeviceMetric m) const
Переопределено из QPaintDevice::metric().
Внутренняя реализация виртуальной функции QPaintDevice::metric().
m — метрика для получения.
[virtual protected] void QWidget::mouseDoubleClickEvent(QMouseEvent *event)
Обработчик событий, для события event, может быть переопределён в подклассе для получения событий двойного щелчка мышью для виджета.
По умолчанию вызывается mousePressEvent().
Примечание: виджет также получит события нажатия и отпускания мыши помимо события двойного щелчка. Разработчику необходимо убедиться, что приложение корректно интерпретирует эти события.
См. также mousePressEvent(), mouseReleaseEvent(), mouseMoveEvent(), event() и QMouseEvent.
[static] QWidget *QWidget::mouseGrabber()
Возвращает виджет, который в настоящее время захватывает ввод мыши.
Если ни один виджет в этом приложении не захватывает ввод мыши, возвращается 0.
См. также grabMouse() и keyboardGrabber().
[virtual protected] void QWidget::mouseMoveEvent(QMouseEvent *event)
Обработчик событий, для события event, может быть переопределён в подклассе для получения событий перемещения мыши для виджета.
Если отслеживание мыши выключено, события перемещения мыши происходят только в случае нажатия кнопки мыши во время перемещения. Если отслеживание мыши включено, события перемещения мыши происходят даже если ни одна кнопка мыши не нажата.
QMouseEvent::pos() сообщает о позиции курсора мыши относительно данного виджета. Для событий нажатия и отпускания мыши позиция обычно совпадает с позицией последнего события перемещения мыши, но она может отличаться, если рука пользователя дрожит. Это особенность базовой системы окон, а не Qt.
Если вы хотите отобразить подсказку сразу, во время перемещения мыши (например, чтобы получить координаты мыши с помощью QMouseEvent::pos() и отобразить их как подсказку), вы должны сначала включить отслеживание мыши, как описано выше. Затем, чтобы гарантировать, что подсказка обновляется немедленно, вы должны вызвать QToolTip::showText() вместо setToolTip() в вашей реализации mouseMoveEvent().
См. также setMouseTracking(), mousePressEvent(), mouseReleaseEvent(), mouseDoubleClickEvent(), event(), QMouseEvent и Пример рисования.
[virtual protected] void QWidget::mousePressEvent(QMouseEvent *event)
Этот обработчик событий, для события event, может быть переопределен в подклассе для получения событий нажатия мыши для виджета.
Если вы создаёте новые виджеты в mousePressEvent(), mouseReleaseEvent() может не работать так, как ожидалось, в зависимости от базовой системы окон (или менеджера окон X11), расположения виджетов и других факторов.
По умолчанию реализуется закрытие всплывающих виджетов при щелчке вне окна. Для других типов виджетов ничего не делается.
См. также mouseReleaseEvent(), mouseDoubleClickEvent(), mouseMoveEvent(), event(), QMouseEvent и Пример рисования.
[virtual protected] void QWidget::mouseReleaseEvent(QMouseEvent *event)
Этот обработчик событий, для события event, может быть переопределен в подклассе для получения событий отпускания мыши для виджета.
См. также mousePressEvent(), mouseDoubleClickEvent(), mouseMoveEvent(), event(), QMouseEvent и Пример рисования.
void QWidget::move(int x, int y)
Это перегруженная функция.
Соответствует move(QPoint(x, y)).
Примечание: Функция-сеттер для свойства pos.
[virtual protected] void QWidget::moveEvent(QMoveEvent *event)
Этот обработчик событий может быть переопределён в подклассе для получения событий перемещения виджета, переданных в параметре event. Когда виджет получает это событие, он уже находится в новой позиции.
Старая позиция доступна через QMoveEvent::oldPos().
См. также resizeEvent(), event(), move() и QMoveEvent.
[virtual protected] bool QWidget::nativeEvent(const QByteArray &eventType, void *message, long *result)
Этот специальный обработчик событий может быть переопределён в подклассе для получения событий базовой платформы, определённых по eventType, которые передаются в параметре message.
В вашей реализации этой функции, если вы хотите остановить обработку события Qt, верните true и установите result. Если вы вернёте false, это событие базовой платформы возвращается Qt, который преобразует событие в Qt-событие и отправляет его виджету.
Примечание: События доставляются только в этот обработчик событий, если виджет имеет системный дескриптор окна.
Примечание: Эта функция заменяет функции фильтра событий x11Event(), winEvent() и macEvent() Qt 4.
| Платформа | Идентификатор типа события | Тип сообщения | Тип результата |
|---|---|---|---|
| Windows | "windows_generic_MSG" | MSG * | LRESULT |
QWidget *QWidget::nativeParentWidget() const
Возвращает родительский виджет для этого виджета, т.е. следующий родительский виджет, имеющий системный идентификатор, или 0, если нет родительского виджета.
Эта функция была введена в Qt 4.4.
См. также effectiveWinId().
QWidget *QWidget::nextInFocusChain() const
Возвращает следующий виджет в цепочке фокуса этого виджета.
См. также previousInFocusChain().
void QWidget::overrideWindowFlags(Qt::WindowFlags flags)
Устанавливает флаги окна для виджета в flags, не сообщая об этом системе окон.
Предупреждение: Не вызывайте эту функцию, если вы не уверены, что делаете.
См. также setWindowFlags().
[virtual] QPaintEngine *QWidget::paintEngine() const
Переопределено из QPaintDevice::paintEngine().
Возвращает движок рисования виджета.
Обратите внимание, что эта функция не должна вызываться пользователем явно, так как она предназначена только для переопределения. Функция вызывается Qt внутри, и по умолчанию реализация может не всегда возвращать действительный указатель.
[virtual protected] void QWidget::paintEvent(QPaintEvent *event)
Этот обработчик событий может быть переопределён в подклассе для получения событий рисования, переданных в event.
Событие рисования — это запрос на перерисовку всего или части виджета. Это может произойти по одной из следующих причин:
Многие виджеты могут просто перерисовать всю свою поверхность, когда их об этом просят, но некоторые медленные виджеты нуждаются в оптимизации, рисуя только запрашиваемую область: QPaintEvent::region(). Эта оптимизация скорости не изменяет результат, так как рисование обрезается до этой области во время обработки события. Например, это делают QListView и QTableView.
Qt также пытается ускорить рисование, объединяя несколько событий рисования в одно. Когда update() вызывается несколько раз или система окон отправляет несколько событий рисования, Qt объединяет эти события в одно событие с большей областью (см. QRegion::united()). Функция repaint() не позволяет использовать эту оптимизацию, поэтому мы рекомендуем использовать update() всякий раз, когда это возможно.
Когда происходит событие рисования, область обновления обычно была очищена, поэтому вы рисуете на фоне виджета.
Фон можно установить с помощью setBackgroundRole() и setPalette().
С Qt 4.0, QWidget автоматически использует двойную буферизацию для рисования, поэтому нет необходимости писать код двойной буферизации в paintEvent() для избежания мерцания.
Примечание: Обычно следует избегать вызова update() или repaint() внутри paintEvent(). Например, вызов update() или repaint() над дочерними элементами внутри paintevent() приводит к неопределенному поведению; дочерний элемент может или не может получить событие рисования.
Предупреждение: Если вы используете пользовательский движок рисования без подсистемы Qt, Qt::WA_PaintOnScreen должен быть установлен. В противном случае, QWidget::paintEngine() никогда не будет вызван; вместо этого будет использоваться подсистема хранения.
См. также event(), repaint(), update(), QPainter, QPixmap, QPaintEvent и Пример аналоговых часов.
QWidget *QWidget::parentWidget() const
Возвращает родительский виджет, или 0, если у него нет родительского виджета.
QWidget *QWidget::previousInFocusChain() const
Функция previousInFocusChain возвращает предыдущий виджет в цепочке фокуса данного виджета.
Эта функция была добавлена в Qt 4.6.
См. также nextInFocusChain().
[slot] void QWidget::raise()
Перемещает данный виджет наверх в стеке родительского виджета.
После этого вызова виджет будет визуально расположен перед любыми перекрывающимися дочерними виджетами.
Примечание: При использовании activateWindow(), вы можете вызвать эту функцию, чтобы убедиться, что окно находится сверху.
См. также lower() и stackUnder().
void QWidget::releaseKeyboard()
Отпускает захват клавиатуры.
См. также grabKeyboard(), grabMouse() и releaseMouse().
void QWidget::releaseMouse()
Отпускает захват мыши.
См. также grabMouse(), grabKeyboard() и releaseKeyboard().
void QWidget::releaseShortcut(int id)
Удаляет ярлык с заданным id из системы ярлыков Qt. Виджет больше не будет получать события QEvent::Shortcut для последовательности клавиш ярлыка (если у него нет других ярлыков с той же последовательностью клавиш).
Предупреждение: Обычно вам не нужно использовать эту функцию, так как система ярлыков Qt автоматически удаляет ярлыки, когда их родительский виджет уничтожается. Лучше использовать QAction или QShortcut для обработки ярлыков, так как они проще в использовании, чем эта функция низкого уровня. Обратите также внимание, что это дорогостоящая операция.
См. также grabShortcut() и setShortcutEnabled().
void QWidget::removeAction(QAction *action)
Удаляет действие action из списка действий этого виджета.
См. также insertAction(), actions() и insertAction().
void QWidget::render(QPaintDevice *target, const QPoint &targetOffset = QPoint(), const QRegion &sourceRegion = QRegion(), RenderFlags renderFlags = RenderFlags( DrawWindowBackground | DrawChildren ))
Рендерит область sourceRegion этого виджета в target, используя renderFlags для определения способа рендеринга. Рисование начинается в targetOffset в target. Например:
QPixmap pixmap(widget->size()); widget->render(&pixmap);
Если sourceRegion - пустая область, эта функция будет использовать QWidget::rect() как область, т.е. весь виджет.
Убедитесь, что вы вызываете QPainter::end() для активного художника устройства target (если таковой имеется) перед рендерингом. Например:
QPainter painter(this); ... painter.end(); myWidget->render(this);
Примечание: Для получения содержимого виджета OpenGL используйте QGLWidget::grabFrameBuffer() или QGLWidget::renderPixmap() вместо этого.
Эта функция была добавлена в Qt 4.3.
void QWidget::render(QPainter *painter, const QPoint &targetOffset = QPoint(), const QRegion &sourceRegion = QRegion(), RenderFlags renderFlags = RenderFlags( DrawWindowBackground | DrawChildren ))
Это перегруженная функция.
Рендерит виджет в QPainter::device() художника painter.
Преобразования и настройки, применённые к painter, будут использованы при рендеринге.
Примечание: Художник painter должен быть активным. На macOS виджет будет рендериться в QPixmap, а затем отрисовываться художником painter.
См. также QPainter::device().
[slot] void QWidget::repaint()
Перерисовывает виджет непосредственно, вызвав paintEvent() немедленно, если обновления отключены или виджет скрыт.
Мы рекомендуем использовать repaint() только если вам нужно немедленное перерисовывание, например, во время анимации. В почти всех случаях update() предпочтительнее, так как он позволяет Qt оптимизировать скорость и минимизировать мерцание.
Предупреждение: Если вы вызываете repaint() в функции, которая может вызываться из paintEvent(), может произойти бесконечная рекурсия. Функция update() никогда не вызывает рекурсию.
См. также update(), paintEvent() и setUpdatesEnabled().
void QWidget::repaint(int x, int y, int w, int h)
Это перегруженная функция.
Этот вариант перерисовывает прямоугольник (x, y, w, h) внутри виджета.
Если w отрицательное, оно заменяется на width() - x, а если h отрицательное, оно заменяется на height() - y.
void QWidget::repaint(const QRect &rect)
Это перегруженная функция.
Этот вариант перерисовывает прямоугольник rect внутри виджета.
void QWidget::repaint(const QRegion &rgn)
Это перегруженная функция.
Этот вариант перерисовывает область rgn внутри виджета.
void QWidget::resize(int w, int h)
Это перегруженная функция.
Соответствует resize(QSize(w, h)).
Примечание: Функция-сеттер для свойства size.
[virtual protected] void QWidget::resizeEvent(QResizeEvent *event)
Обработчик событий может быть переопределен в подклассе для получения событий изменения размера виджета, которые передаются в параметре event. При вызове resizeEvent(), у виджета уже есть новая геометрия. Старый размер доступен через QResizeEvent::oldSize().
Виджет будет стерт и получит событие рисования сразу после обработки события изменения размера. Рисование внутри этого обработчика не требуется (и не должно быть).
См. также moveEvent(), event(), resize(), QResizeEvent, paintEvent() и Пример Scribble.
bool QWidget::restoreGeometry(const QByteArray &geometry)
Восстанавливает геометрию и состояние виджетов верхнего уровня, сохранённых в массиве байтов geometry. Возвращает true при успехе; в противном случае возвращает false.
Если восстановленная геометрия находится вне экрана, она будет изменена для размещения внутри доступной геометрии экрана.
Чтобы восстановить геометрию, сохранённую с помощью QSettings, можно использовать такой код:
QSettings settings("MyCompany", "MyApp");
myWidget->restoreGeometry(settings.value("myWidget/geometry").toByteArray()); См. документацию Геометрия окна для обзора проблем с геометрией окон.
Используйте QMainWindow::restoreState(), чтобы восстановить геометрию и состояние панелей инструментов и плавающих виджетов.
Эта функция была добавлена в Qt 4.2.
См. также saveGeometry(), QSettings, QMainWindow::saveState(), и QMainWindow::restoreState().
QByteArray QWidget::saveGeometry() const
Сохраняет текущую геометрию и состояние виджетов верхнего уровня.
Чтобы сохранить геометрию при закрытии окна, можно реализовать обработчик закрытия следующим образом:
void MyWidget::closeEvent(QCloseEvent *event)
{
QSettings settings("MyCompany", "MyApp");
settings.setValue("geometry", saveGeometry());
QWidget::closeEvent(event);
} См. документацию Геометрия окна для обзора проблем с геометрией окон.
Используйте QMainWindow::saveState(), чтобы сохранить геометрию и состояние панелей инструментов и плавающих виджетов.
Эта функция была добавлена в Qt 4.2.
См. также restoreGeometry(), QMainWindow::saveState(), и QMainWindow::restoreState().
void QWidget::scroll(int dx, int dy)
Прокручивает виджет, включая его дочерние элементы, на dx пикселей вправо и dy пикселей вниз. Значения dx и dy могут быть отрицательными.
После прокрутки виджеты получат события рисования для областей, которые нужно перерисовать. Для виджетов, которые Qt знает как непрозрачные, это только новые видимые части. Например, если непрозрачный виджет прокручен влево на 8 пикселей, нужно обновить только полосу шириной 8 пикселей на правом краю.
Поскольку виджеты по умолчанию передают содержимое своих родительских элементов, необходимо установить свойство autoFillBackground или использовать setAttribute(), чтобы установить атрибут Qt::WA_OpaquePaintEvent, чтобы сделать виджет непрозрачным.
Для виджетов, использующих передачу содержимого, прокрутка вызовет обновление всей области прокрутки.
См. также Прозрачность и буферизация.
void QWidget::scroll(int dx, int dy, const QRect &r)
Это перегруженная функция.
Этот вариант прокручивает только r и не перемещает дочерние элементы виджета.
Если r пуста или некорректна, результат не определён.
См. также QScrollArea.
void QWidget::setAttribute(Qt::WidgetAttribute attribute, bool on = true)
Устанавливает атрибут attribute для этого виджета, если on равно true; в противном случае очищает атрибут.
См. также testAttribute().
void QWidget::setBackgroundRole(QPalette::ColorRole role)
Устанавливает роль фона виджета в role.
Роль фона определяет кисть из палитры виджета, используемую для отрисовки фона.
Если role равно QPalette::NoRole, виджет наследует роль фона своего родителя.
Обратите внимание, что стили могут свободно выбирать любой цвет из палитры. Вы можете изменить палитру или установить стилевое описание, если вам не удаётся достичь желаемого результата с помощью setBackgroundRole().
См. также backgroundRole() и foregroundRole().
void QWidget::setBaseSize(int basew, int baseh)
Это перегруженная функция.
Соответствует setBaseSize(QSize(basew, baseh)). Устанавливает базовый размер виджета в ширину basew и высоту baseh.
Примечание: Функция-сеттер для свойства baseSize.
void QWidget::setContentsMargins(int left, int top, int right, int bottom)
Устанавливает отступы вокруг содержимого виджета с размерами left, top, right и bottom. Отступы используются системой компоновки и могут использоваться подклассами для указания области рисования (например, без рамки).
Изменение отступов вызовет resizeEvent().
См. также contentsMargins(), contentsRect() и getContentsMargins().
void QWidget::setContentsMargins(const QMargins &margins)
Это перегруженная функция.
Функция setContentsMargins устанавливает отступы вокруг содержимого виджета.
Устанавливает отступы вокруг содержимого виджета с размерами, определяемыми margins. Отступы используются системой компоновки и могут использоваться подклассами для указания области рисования (например, без рамки).
Изменение отступов вызовет resizeEvent().
Эта функция была добавлена в Qt 4.6.
См. также contentsRect() и getContentsMargins().
[slot] void QWidget::setDisabled(bool disable)
Отключает события ввода виджета, если disable равно true; в противном случае включает события ввода.
См. документацию enabled для получения дополнительной информации.
См. также isEnabledTo(), QKeyEvent, QMouseEvent и changeEvent().
void QWidget::setEditFocus(bool enable)
Если enable равно true, этот виджет получит фокус редактирования, в этом случае Qt::Key_Up и Qt::Key_Down будут доставлены виджету обычным способом; в противном случае Qt::Key_Up и Qt::Key_Down используются для смены фокуса.
Эта функция доступна только в Qt для встраиваемой среды Linux.
См. также hasEditFocus() и QApplication::keypadNavigationEnabled().
void QWidget::setFixedHeight(int h)
Устанавливает минимальную и максимальную высоту виджета в h без изменения ширины. Обеспечивает удобство.
См. также sizeHint(), minimumSize(), maximumSize() и setFixedSize().
void QWidget::setFixedSize(const QSize &s)
Устанавливает минимальный и максимальный размеры виджета в s, предотвращая его изменение размера.
Это переопределит ограничения размера, заданные QLayout.
Чтобы убрать ограничения, установите размер в QWIDGETSIZE_MAX.
В качестве альтернативы, если вы хотите, чтобы виджет имел фиксированный размер на основе своего содержимого, можно вызвать QLayout::setSizeConstraint(QLayout::SetFixedSize);
См. также maximumSize и minimumSize.
void QWidget::setFixedSize(int w, int h)
Это перегруженная функция.
Устанавливает ширину виджета в w и высоту в h.
void QWidget::setFixedWidth(int w)
Устанавливает минимальную и максимальную ширину виджета в w без изменения высоты. Обеспечивает удобство.
См. также sizeHint(), minimumSize(), maximumSize() и setFixedSize().
void QWidget::setFocus(Qt::FocusReason reason)
Даёт виджету (или его прокси фокуса) фокус клавиатуры, если этот виджет или один из его родителей является активным окном. Аргумент reason будет передан в любое событие фокуса, отправленное этой функцией, он используется для объяснения того, что привело к получению виджетом фокуса. Если окно не активно, виджет получит фокус при активации окна.
Сначала событие об изменении фокуса отправляется виджету с текущим фокусом (если таковой имеется), чтобы сообщить ему о предстоящей потере фокуса. Затем фокус меняется, событие потери фокуса отправляется предыдущему виджету с фокусом, а событие получения фокуса отправляется новому виджету, чтобы сообщить ему о получении фокуса. (Ничего не происходит, если виджеты с фокусом перед и после изменения совпадают.)
Примечание: На встроенных платформах setFocus() не приведет к открытию панели ввода методом ввода. Если вы хотите этого добиться, необходимо самостоятельно отправить событие QEvent::RequestSoftwareInputPanel вью.
setFocus() устанавливает фокус на виджет независимо от его политики фокусировки, но не очищает захват клавиатуры (см. grabKeyboard()).
Обратите внимание, что если виджет скрыт, он не примет фокус, пока не будет показан.
Предупреждение: Если вы вызываете setFocus() в функции, которая может быть вызвана из focusOutEvent() или focusInEvent(), может возникнуть бесконечная рекурсия.
См. также hasFocus(), clearFocus(), focusInEvent(), focusOutEvent(), setFocusPolicy(), focusWidget(), QApplication::focusWidget(), grabKeyboard(), grabMouse(), Фокус клавиатуры в виджетах и QEvent::RequestSoftwareInputPanel.
[slot] void QWidget::setFocus()
Это перегруженный метод.
Передает фокус ввода с клавиатуры данному виджету (или его прокси фокуса), если этот виджет или один из его родителей является активным окном.
void QWidget::setFocusProxy(QWidget *w)
Устанавливает прокси фокуса виджета на виджет w. Если w равен 0, функция сбрасывает прокси фокуса для этого виджета.
Некоторые виджеты могут "иметь фокус", но создают дочерний виджет, например, QLineEdit, для фактического обработки фокуса. В этом случае виджет может установить виджет редактирования в качестве своего прокси фокуса.
setFocusProxy() устанавливает виджет, который фактически получит фокус, когда фокус получит "этот виджет". Если существует прокси фокуса, setFocus() и hasFocus() работают с прокси фокуса.
См. также focusProxy().
void QWidget::setForegroundRole(QPalette::ColorRole role)
Устанавливает роль переднего плана виджета на role.
Роль переднего плана определяет цвет из палитры виджета, который используется для отрисовки переднего плана.
Если role равно QPalette::NoRole, виджет использует роль переднего плана, контрастирующую с ролью заднего плана.
Обратите внимание, что стили могут свободно выбирать любой цвет из палитры. Вы можете изменить палитру или установить стиль, если не достигаете желаемого результата с помощью setForegroundRole().
См. также foregroundRole() и backgroundRole().
void QWidget::setGeometry(int x, int y, int w, int h)
Это перегруженный метод.
Это соответствует setGeometry(QRect(x, y, w, h)).
Примечание: Функция-сеттер для свойства geometry.
void QWidget::setGraphicsEffect(QGraphicsEffect *effect)
Функция setGraphicsEffect предназначена для установки графического эффекта виджета.
Устанавливает effect как эффект виджета. Если на этом виджете уже установлен эффект, QWidget удалит существующий эффект перед установкой нового effect.
Если effect установлен на другом виджете, setGraphicsEffect() удалит эффект с виджета и установит его на этот виджет.
QWidget берет effect во владение.
Примечание: Эта функция применит эффект к себе и всем своим дочерним виджетам.
Примечание: Графические эффекты не поддерживаются для виджетов на основе OpenGL, таких как QGLWidget, QOpenGLWidget и QQuickWidget.
Эта функция была представлена в Qt 4.6.
См. также graphicsEffect().
[slot] void QWidget::setHidden(bool hidden)
Функция для удобства, эквивалентна setVisible(!hidden).
См. также isHidden().
void QWidget::setLayout(QLayout *layout)
Устанавливает менеджер компоновки для этого виджета на layout.
Если на этом виджете уже установлен менеджер компоновки, QWidget не позволит вам установить другой. Вы должны сначала удалить существующий менеджер компоновки (возвращается layout()) перед вызовом setLayout() с новой компоновкой.
Если layout является менеджером компоновки другого виджета, setLayout() переродирует компоновку и сделает ее менеджером компоновки для этого виджета.
Пример:
QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(formWidget);
setLayout(layout); Альтернативой вызову этой функции является передача этого виджета в конструктор компоновки.
QWidget возьмет layout во владение.
См. также layout() и Управление компоновкой.
void QWidget::setMask(const QBitmap &bitmap)
Приводит к тому, что видны только те пиксели виджета, для которых в bitmap соответствующий бит равен 1. Если область включает пиксели за пределами rect() виджета, элементы управления системы окон в этой области могут быть или не быть видимыми в зависимости от платформы.
Обратите внимание, что этот эффект может быть медленным, если область имеет сложную форму.
Следующий код демонстрирует, как изображение с альфа-каналом можно использовать для генерации маски для виджета:
QLabel topLevelLabel;
QPixmap pixmap(":/images/tux.png");
topLevelLabel.setPixmap(pixmap);
topLevelLabel.setMask(pixmap.mask()); Метка, отображаемая этим кодом, маскируется с помощью содержащегося в ней изображения, создавая впечатление, что неправильно сформированное изображение рисуется непосредственно на экране.
Маскированные виджеты получают события мыши только в видимых частях.
См. также mask(), clearMask(), windowOpacity() и Пример Часов со Сформованным ЦИФЕРБЛАТОМ.
void QWidget::setMask(const QRegion ®ion)
Это перегруженный метод.
Приводит к тому, что видны только части виджета, которые перекрываются 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().
END_OF_DOCUMENT_MARKERvoid QWidget::setShortcutEnabled(int id, bool enable = true)
Если enable имеет значение true, то ярлык с заданным id будет включён; в противном случае ярлык будет отключён.
Предупреждение: Обычно вам не нужно использовать эту функцию, так как система ярлыков Qt автоматически включает/отключает ярлыки при скрытии/отображении виджетов и при получении/потере ими фокуса. Лучше использовать QAction или QShortcut для обработки ярлыков, поскольку они проще в использовании, чем эта низкоуровневая функция.
См. также grabShortcut() и releaseShortcut().
void QWidget::setSizeIncrement(int w, int h)
Это перегруженная функция.
Устанавливает приращение размера по оси x (ширина) в w и приращение размера по оси y (высота) в h.
Примечание: Функция-сеттер для свойства sizeIncrement.
void QWidget::setSizePolicy(QSizePolicy::Policy horizontal, QSizePolicy::Policy vertical)
Это перегруженная функция.
Устанавливает политику размера виджета в horizontal и vertical со стандартным растяжением и без пропорциональности высоты к ширине.
Примечание: Функция-сеттер для свойства sizePolicy.
См. также QSizePolicy::QSizePolicy().
void QWidget::setStyle(QStyle *style)
Устанавливает графический стиль виджета в style. Владение объектом стиля не передаётся.
Если стиль не установлен, виджет использует стиль приложения, QApplication::style() вместо него.
Установка стиля виджета не влияет на существующие или будущие дочерние виджеты.
Предупреждение: Эта функция особенно полезна для демонстрационных целей, когда вы хотите продемонстрировать возможности стилизации Qt. В реальных приложениях следует избегать её использования и использовать вместо этого один согласованный графический стиль.
Предупреждение: В настоящее время таблицы стилей Qt не поддерживаются для пользовательских подклассов QStyle. Мы планируем решить эту проблему в будущей версии.
См. также style(), QStyle, QApplication::style() и QApplication::setStyle().
void QWidget::setTabOrder(QWidget *first, QWidget *second)
Размещает виджет second после виджета first в порядке фокуса.
Обратите внимание, что поскольку порядок переключения табом для виджета second изменяется, вы должны упорядочить цепочку так:
не так:
Если first или second имеет прокси фокуса, setTabOrder() корректно подставляет прокси.
См. также setFocusPolicy(), setFocusProxy() и Фокус клавиатуры в виджетах.
void QWidget::setWindowRole(const QString &role)
Устанавливает роль окна в role. Это имеет смысл только для окон на X11.
См. также windowRole().
void QWidget::setWindowState(Qt::WindowStates windowState)
Устанавливает состояние окна в windowState. Состояние окна — это объединение по битовому ИЛИ состояний Qt::WindowState: Qt::WindowMinimized, Qt::WindowMaximized, Qt::WindowFullScreen и Qt::WindowActive.
Если окно не отображается (т. е. isVisible() возвращает false), состояние окна применится при вызове show(). Для отображаемых окон изменение происходит мгновенно. Например, для переключения между полноэкранным и обычным режимом используйте следующий код:
Для восстановления и активации минимизированного окна (при сохранении его максимального и/или полноэкранного состояния) используйте следующее:
Вызов этой функции скроет виджет. Вы должны вызвать show(), чтобы снова отобразить виджет.
Примечание: На некоторых системах окон Qt::WindowActive не мгновенный и может игнорироваться в определенных случаях.
При изменении состояния окна виджет получает changeEvent() типа QEvent::WindowStateChange.
См. также Qt::WindowState и windowState().
void QWidget::setupUi(QWidget *widget)
Настраивает пользовательский интерфейс для указанного виджета widget.
Примечание: Эта функция доступна для виджетов, которые наследуются от описаний пользовательских интерфейсов, созданных с помощью uic.
См. также Использование файла описания интерфейса Designer в вашем приложении.
void QWidget::show()
Отображает виджет и его дочерние виджеты.
Это эквивалентно вызову showFullScreen(), showMaximized() или setVisible(true), в зависимости от поведения по умолчанию платформы для флагов окна.
См. также raise(), showEvent(), hide(), setVisible(), showMinimized(), showMaximized(), showNormal(), isVisible() и windowFlags().
void QWidget::showEvent(QShowEvent *event)
Этот обработчик событий может быть переопределён в подклассе для получения событий отображения виджетов, которые передаются в параметре event.
Несамопроизвольные события отображения отправляются виджетам непосредственно перед их отображением. Самопроизвольные события отображения окон доставляются после этого.
Примечание: Виджет получает самопроизвольные события отображения и скрытия, когда его статус отображения изменяется системой окон, например, самопроизвольное событие скрытия, когда пользователь сворачивает окно, и самопроизвольное событие отображения, когда окно восстанавливается. После получения самопроизвольного события скрытия виджет всё ещё считается видимым в смысле isVisible().
См. также visible, event() и QShowEvent.
void QWidget::showFullScreen()
Отображает виджет в полноэкранном режиме.
Вызов этой функции влияет только на окна.
Для выхода из полноэкранного режима вызовите showNormal().
Полный экран работает нормально под Windows, но имеет определённые проблемы под X. Эти проблемы связаны с ограничениями протокола ICCCM, который определяет общение между клиентами X11 и менеджером окон. ICCCM просто не понимает концепции окон в полноэкранном режиме без декораций. Поэтому наилучшее, что мы можем сделать, это запросить окно без рамок и разместить его так, чтобы оно заполняло весь экран. В зависимости от менеджера окон это может или не может работать. Окно без рамок запрашивается с помощью подсказок MOTIF, которые по крайней мере частично поддерживаются практически всеми современными менеджерами окон.
Альтернативой было бы полностью обойти менеджер окон и создать окно с флагом Qt::X11BypassWindowManagerHint. Однако это создаёт другие серьёзные проблемы, такие как полная поломка фокуса клавиатуры и очень странные эффекты при изменении рабочего стола или когда пользователь поднимает другие окна.
Менеджеры окон X11, которые следуют современным спецификациям после ICCCM, поддерживают полноэкранный режим должным образом.
См. также showNormal(), showMaximized(), show(), hide() и isVisible().
void QWidget::showMaximized()
Отображает виджет в максимальном режиме.
Вызов этой функции влияет только на окна.
В X11 эта функция может работать некорректно с определёнными менеджерами окон. См. документацию по геометрии окна для объяснения.
См. также setWindowState(), showNormal(), showMinimized(), show(), hide() и isVisible().
void QWidget::showMinimized()
Отображает виджет минимизированным, в виде значка.
Вызов этой функции влияет только на окна.
См. также showNormal(), showMaximized(), show(), hide(), isVisible() и isMinimized().
void QWidget::showNormal()
Восстанавливает виджет после его максимизации или минимизации.
Вызов этой функции влияет только на окна.
См. также setWindowState(), showMinimized(), showMaximized(), show(), hide() и isVisible().
void QWidget::stackUnder(QWidget *w)
Размещает виджет под w в стеке родительского виджета.
Для работы с этим необходимо, чтобы виджет и w были потомками одного родителя.
QStyle *QWidget::style() const
См. также QWidget::setStyle(), QApplication::setStyle() и QApplication::style().
[virtual protected] void QWidget::tabletEvent(QTabletEvent *event)
Обработчик событий, для события event, может быть переопределён в подклассе для получения событий планшета для виджета.
Если вы переопределяете этот обработчик, очень важно, чтобы вы ignore() событие, если вы его не обрабатываете, чтобы родительский виджет мог его интерпретировать.
По умолчанию, обработчик игнорирует событие.
См. также QEvent::ignore(), QEvent::accept(), event() и QTabletEvent.
bool QWidget::testAttribute(Qt::WidgetAttribute attribute) const
Возвращает true если атрибут attribute установлен для этого виджета; в противном случае возвращает false.
См. также setAttribute().
bool QWidget::underMouse() const
Возвращает true если виджет находится под курсором мыши; в противном случае возвращает false.
Это значение не обновляется должным образом во время операций перетаскивания.
См. также enterEvent() и leaveEvent().
void QWidget::ungrabGesture(Qt::GestureType gesture)
Отписывает виджет от указанного типа жеста gesture.
Эта функция была добавлена в Qt 4.6.
См. также grabGesture() и QGestureEvent.
[slot] void QWidget::update()
Обновляет виджет, если обновления не отключены и виджет не скрыт.
Эта функция не вызывает немедленного перерисовки; вместо этого она планирует событие рисования для обработки, когда Qt вернётся к главному циклу событий. Это позволяет Qt оптимизировать для большей скорости и меньшей мерцания, чем вызов repaint().
Вызов update() несколько раз обычно приводит к одному вызову paintEvent().
Qt обычно стирает область виджета перед вызовом paintEvent(). Если атрибут виджета Qt::WA_OpaquePaintEvent установлен, виджет отвечает за отрисовку всех своих пикселей непрозрачным цветом.
См. также repaint(), paintEvent(), setUpdatesEnabled() и Пример аналоговых часов.
void QWidget::update(int x, int y, int w, int h)
Это перегруженная функция.
Эта версия обновляет прямоугольник (x, y, w, h) внутри виджета.
void QWidget::update(const QRect &rect)
Это перегруженная функция.
Эта версия обновляет прямоугольник rect внутри виджета.
void QWidget::update(const QRegion &rgn)
Это перегруженная функция.
Эта версия перерисовывает область rgn внутри виджета.
void QWidget::updateGeometry()
Уведомляет систему компоновки, что этот виджет изменился и, возможно, потребует изменения геометрии.
Вызывайте эту функцию, если изменились sizeHint() или sizePolicy().
Для явно скрытых виджетов updateGeometry() является пустой операцией. Система компоновки будет уведомлена, как только виджет будет показан.
[protected slot] void QWidget::updateMicroFocus()
Обновляет микрофокус виджета.
QRegion QWidget::visibleRegion() const
Возвращает область, где могут происходить события рисования, не закрытые другими виджетами.
Для видимых виджетов это приближение области, не покрытой другими виджетами; в противном случае это пустая область.
Функция repaint() при необходимости вызывает эту функцию, поэтому обычно нет необходимости вызывать её.
[virtual protected] void QWidget::wheelEvent(QWheelEvent *event)
Этот обработчик событий, для события event, может быть переопределён в подклассе для получения событий прокрутки для виджета.
Если вы переопределяете этот обработчик, очень важно, чтобы вы ignore() событие, если вы его не обрабатываете, чтобы родительский виджет мог его интерпретировать.
По умолчанию, обработчик игнорирует событие.
См. также QEvent::ignore(), QEvent::accept(), event() и QWheelEvent.
WId QWidget::winId() const
Возвращает идентификатор окна системы визуализации для виджета.
Принципиально переносимая функция, но если вы её используете, вы, вероятно, собираетесь сделать что-то непереносимое. Будьте осторожны.
Если виджет неродной (чужой) и вызывается winId(), этому виджету будет предоставлен родной дескриптор.
В macOS тип, возвращаемый, зависит от фреймворка, к которому был связан Qt. Если Qt использует Carbon, то {WId} фактически является HIViewRef. Если Qt использует Cocoa, {WId} является указателем на NSView.
Это значение может меняться во время выполнения. Событие с типом QEvent::WinIdChange будет отправлено виджету после изменения идентификатора окна системы визуализации.
См. также find().
QWidget *QWidget::window() const
Возвращает окно для этого виджета, т.е. следующий предковый виджет, у которого (или который мог бы иметь) окно системы визуализации.
Если виджет является окном, возвращается сам виджет.
Типичное использование — изменение заголовка окна:
aWidget->window()->setWindowTitle("New Window Title"); См. также isWindow().
QWindow *QWidget::windowHandle() const
Если это родной виджет, возвращает связанное QWindow. В противном случае возвращает null.
К родным виджетам относятся виджеты верхнего уровня, QGLWidget и дочерние виджеты, для которых был вызван winId().
Эта функция была добавлена в Qt 5.0.
См. также winId().
[signal] void QWidget::windowIconChanged(const QIcon &icon)
Этот сигнал излучается, когда значок окна изменился, с новым icon в качестве аргумента.
Эта функция была добавлена в Qt 5.2.
Примечание: Сигнал-уведомитель для свойства windowIcon.
QString QWidget::windowRole() const
Возвращает роль окна или пустую строку.
См. также setWindowRole(), windowIcon и windowTitle.
Qt::WindowStates QWidget::windowState() const
Возвращает текущее состояние окна. Состояние окна — это объединение по оператору OR состояний Qt::WindowState: Qt::WindowMinimized, Qt::WindowMaximized, Qt::WindowFullScreen и Qt::WindowActive.
См. также Qt::WindowState и setWindowState().
[signal] void QWidget::windowTitleChanged(const QString &title)
Этот сигнал излучается, когда заголовок окна изменился, с новым title в качестве аргумента.
Эта функция была добавлена в Qt 5.2.
Примечание: Сигнал-уведомитель для свойства windowTitle.
Qt::WindowType QWidget::windowType() const
Возвращает тип окна этого виджета. Это идентично windowFlags() & Qt::WindowType_Mask.
См. также windowFlags.
Документация макросов
QWIDGETSIZE_MAX
Определяет максимальный размер объекта QWidget.
Наибольший разрешённый размер для виджета — QSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX), т.е. QSize (16777215,16777215).
См. также QWidget::setMaximumSize().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.6/qwidget.html