Home · All Classes · Main Classes · Grouped Classes · Modules · Functions

Описание Класса QWidget
[модуль QtGui]

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

#include <QWidget>

Наследует QObject и QPaintDevice.

Наследуется Q3ComboBox, Q3DataBrowser, Q3DataView, Q3DateTimeEdit, Q3DateTimeEditBase, Q3DockArea, Q3Header, Q3MainWindow, QAbstractButton, QAbstractSlider, QAbstractSpinBox, QAxWidget, QComboBox, QDesignerActionEditorInterface, QDesignerFormWindowInterface, QDesignerObjectInspectorInterface, QDesignerPropertyEditorInterface, QDesignerWidgetBoxInterface, QDesktopWidget, QDialog, QDockWidget, QFocusFrame, QFrame, QGLWidget, QGroupBox, QLineEdit, QMainWindow, QMenu, QMenuBar, QProgressBar, QRubberBand, QSizeGrip, QSplashScreen, QSplitterHandle, QStatusBar, QSvgWidget, QTabBar, QTabWidget, QToolBar, QWorkspace, QX11EmbedContainer и QX11EmbedWidget.

Свойства

Открытые Функции

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

Сигналы

Статические Открытые Члены

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


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

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

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

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

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

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

Если Вы хотите использовать QWidget как контейнер дочерних элементов, Вы, скорее всего, захотите управляеть их расположением внутри родителя QWidget. (См. Layouts.)

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

Группы функций:

КонтекстФункции
Окноshow(), hide(), raise(), lower(), close().
Окно верхнего уровняisWindowModified(), setWindowModified(), windowTitle(), setWindowTitle(), windowIcon(), setWindowIcon(), windowIconText(), setWindowIconText(), isActiveWindow(), activateWindow(), showMinimized(). showMaximized(), showFullScreen(), showNormal().
Содержимое окнаupdate(), repaint(), scroll().
Геометрияpos(), size(), rect(), x(), y(), width(), height(), sizePolicy(), setSizePolicy(), sizeHint(), updateGeometry(), layout(), move(), resize(), setGeometry(), frameGeometry(), geometry(), childrenRect(), adjustSize(), mapFromGlobal(), mapFromParent() mapToGlobal(), mapToParent(), maximumSize(), minimumSize(), sizeIncrement(), setMaximumSize(), setMinimumSize(), setSizeIncrement(), setBaseSize(), setFixedSize()
РежимisVisible(), isVisibleTo(), isMinimized(), isEnabled(), isEnabledTo(), isModal(), isWindow(), setEnabled(), hasMouseTracking(), setMouseTracking(), updatesEnabled(), setUpdatesEnabled(), visibleRegion().
Внешний вид и поведениеstyle(), setStyle(), cursor(), setCursor() font(), setFont(), palette(), setPalette(), backgroundRole(), setBackgroundRole(), fontMetrics(), fontInfo().
Функции фокуса клавиатурыsetFocusPolicy(), focusPolicy(), hasFocus(), setFocus(), clearFocus(), setTabOrder(), setFocusProxy().
Захват мыши и клавиатурыgrabMouse(), releaseMouse(), grabKeyboard(), releaseKeyboard(), mouseGrabber(), keyboardGrabber().
Обработка сообщенийevent(), mousePressEvent(), mouseReleaseEvent(), mouseDoubleClickEvent(), mouseMoveEvent(), keyPressEvent(), keyReleaseEvent(), focusInEvent(), focusOutEvent(), wheelEvent(), enterEvent(), leaveEvent(), paintEvent(), moveEvent(), resizeEvent(), closeEvent(), dragEnterEvent(), dragMoveEvent(), dragLeaveEvent(), dropEvent(), childEvent(), showEvent(), hideEvent(), customEvent(). changeEvent(),
Системные функцииparentWidget(), window(), setParent(), winId(), find(), metric().
Подсказка What's thissetWhatsThis()
Функции управления фокусомfocusNextChild(), focusPreviousChild()

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

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

Пример widgets/calculator является хорошим образцом простого виджета. Он содержит обработчик событий (как положено всем виджетам), характерные для ситуации (как все полезные виджеты), и имеет дочерние объекты и соединения. Все это работает реагируя на события: это - наиболее распространенный способ проектирования приложений с GUI.

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

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

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

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

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

При реализации виджета необходимо рассмотреть еще несколько вещей.

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

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


Описание Свойств

acceptDrops : bool

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

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

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

Внимание: Не изменяйте данное свойство в обработчике сообщения Drag&Drop.

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

accessibleDescription : QString

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

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

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

accessibleName : QString

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

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

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

autoFillBackground : bool

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

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

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

This property was introduced in Qt 4.1.

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

См. также Qt::WA_OpaquePaintEvent и Qt::WA_NoSystemBackground.

baseSize : QSize

Данное свойство содержит базовый размер виджета.

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

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

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

childrenRect : const QRect

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

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

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

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

childrenRegion : const QRegion

Данное свойство содержит объединенную область занятую дочерними объектами виджета.

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

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

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

contextMenuPolicy : Qt::ContextMenuPolicy

Данное свойство содержит правила показа контекстного меню.

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

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

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

cursor : QCursor

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

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

Виджет редактора мог бы использовать I-подобный курсор:

    setCursor(Qt::IBeamCursor);

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

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

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

enabled : bool

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

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

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

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

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

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

focus : const bool

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

Эквивалентно QApplication::focusWidget() == this.

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

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

focusPolicy : Qt::FocusPolicy

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

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

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

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

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

font : QFont

Данное свойство содержит текущий шрифт виджета.

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

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

Следующий фрагмент кода устанавливает полужирный шрифт helvetica размером 12 пунктов:

    QFont f("Helvetica", 12, QFont::Bold);
    setFont(f);

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

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

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

frameGeometry : const QRect

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

Краткий обзор проблем оконной геометрии здесь: Описание Оконной Геометрии.

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

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

frameSize : const QSize

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

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

fullScreen : const bool

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

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

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

geometry : QRect

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

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

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

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

Обзор оконной геомерии см. здесь: Описание Оконной Геометрии.

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

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

height : const int

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

Обзор оконной геомерии см. здесь: Описание Оконной Геометрии.

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

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

isActiveWindow : const bool

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

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

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

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

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

layoutDirection : Qt::LayoutDirection

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

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

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

maximized : const bool

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

Данное свойство уместно тольк для окон.

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

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

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

maximumHeight : int

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

Данное свойство связано с maximumSize().height().

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

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

maximumSize : QSize

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

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

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

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

maximumWidth : int

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

Данное свойство связано с maximumSize().width().

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

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

minimized : const bool

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

Данное свойство уместно только для окон.

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

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

minimumHeight : int

Данное свойство содержит минимальную высоту виджета.

Данное свойство связано с minimumSize().height().

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

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

minimumSize : QSize

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

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

Установка минимального размера отвергает установку минимального размера в QLayout.

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

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

minimumSizeHint : const QSize

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

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

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

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

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

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

minimumWidth : int

Данное свойство содержит минимальную ширину виджета.

Данное свойство связано с minimumSize().width().

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

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

modal : const bool

Данное свойство является-ли виджет модальным.

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

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

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

mouseTracking : bool

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

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

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

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

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

normalGeometry : const QRect

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

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

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

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

palette : QPalette

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

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

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

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

pos : QPoint

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

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

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

Функция move() виртуальна и Qt вызывает реализации других, перегруженных move().

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

Обзор оконной геомерии см. здесь: Описание Оконной Геометрии.

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

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

rect : const QRect

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

Свойство rect эквивалентно QRect(0, 0, width(), height()).

Обзор оконной геомерии см. здесь: Описание Оконной Геометрии.

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

См. также size.

size : QSize

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

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

Размер виджета подгоняется с учетом minimumSize() и maximumSize(). Для окон минимальный размер, по крайней мере, равен QSize(1, 1) и может быть больше, но это зависит от оконного менеджера.

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

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

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

sizeHint : const QSize

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

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

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

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

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

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

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

sizePolicy : QSizePolicy

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

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

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

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

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

statusTip : QString

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

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

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

toolTip : QString

Данное свойство содержит оприсание инструмента.

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

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

updatesEnabled : bool

Данное свойство содержит разрешение на изменение виджета.

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

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

Пример:

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

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

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

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

visible : bool

Данное свойство определяет видим-ли виджет.

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

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

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

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

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

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

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

whatsThis : QString

Данное свойство содержит строку подсказки What's This виджета.

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

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

width : const int

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

Обзор оконной геомерии см. здесь: Описание Оконной Геометрии.

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

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

windowFlags : Qt::WindowFlags

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

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

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

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

windowIcon : QIcon

Данное свойство содержит иконку окна.

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

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

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

windowIconText : QString

Данное свойство содержит текст иконки окна.

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

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

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

windowModality : Qt::WindowModality

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

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

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

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

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

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

windowModified : bool

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

Измененное окно - это окно, чье содержимое было изменено, но не сохранено на диск. Данное свойство имеет разный эффект на разных платформах. В Mac OS X кнопка закрытия будет иметь другой вид; на других платформах заголовок окна будет содержать '*' (звездочку).

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

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

См. также windowTitle.

windowOpacity : double

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

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

Значение по умолчанию равно 1.0.

Данная возможность доступна на платформах Mac OS X, X11, поддерживающих расширение Composite, и Windows 2000 и выше.

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

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

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

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

windowTitle : QString

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

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

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

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

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

x : const int

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

Обзор оконной геомерии см. здесь: Описание Оконной Геометрии.

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

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

y : const int

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

Обзор оконной геомерии см. здесь: Описание Оконной Геометрии.

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

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


Описание Функций-Членов

QWidget::QWidget ( QWidget * parent = 0, Qt::WFlags f = 0 )

Создает виджет, как дочерний по отношению к виджету parent, с флагами f.

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

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

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

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

QWidget::~QWidget ()

Разрушает виджет.

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

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

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

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

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

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

void QWidget::activateWindow ()

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

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

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

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

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

void QWidget::addAction ( QAction * action )

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

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

A QWidget should only have one of each action.

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

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

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

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

void QWidget::adjustSize ()

Подгоняет размер виджета под содержимое.

Использует sizeHint(), если установлен (т.е. если рекомендуемые ширина и высота >= 0), в противном случае размер устанавливается по прямоугольнику ограничивающему дочерние виджеты. Для виджета верхнего уровня, функция учитывает также размер экрана.

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

QPalette::ColorRole QWidget::backgroundRole () const

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

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

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

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

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

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

Состояние, устанавливаемое в данном сообщении может быть получено из сообщения e.

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

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

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

Данная перегруженная функция-член создана для удобства. Ее поведение аналогично поведению вышеприведенной функции.

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

void QWidget::clearFocus ()

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

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

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

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

void QWidget::clearMask ()

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

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

bool QWidget::close ()   [slot]

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

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

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

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

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

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

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

QRect QWidget::contentsRect () const

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

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

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

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

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

Реализация по умолчанию вызывает e->ignore() отвергающее сообщение. Для получения более подробной информации см. QContextMenuEvent.

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

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

Создает окно виджета если window равно 0, в противном случае устанавливает виджет в окно window.

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

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

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

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

Данный сигнал испускается если contextMenuPolicy виджета равно Qt::CustomContextMenu и пользователь вызывает контекстное меню виджета. Позиция pos - это позиция запроса в координатах виджета.

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

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

Освобождает ресурсы оконной системы. Разрушает окно виджета если destroyWindow равно true.

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

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

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

Данный обработчик сообщений вызывается когда происходит перетаскивание какого-либо виджета и указатель мыши входит на данный виджет. Сообщение передается через параметр event.

Для получения краткого обзора реализации drag-and-drop в Вашем приложении см. Описание drag-and-drop.

См. также QTextDrag, QImageDrag и QDragEnterEvent.

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

Данный обработчик сообщений вызывается когда происходит перетаскивание какого-либо виджета и указатель мыши покидает данный виджет. Сообщение передается через параметр event.

Для получения краткого обзора реализации drag-and-drop в Вашем приложении см. Описание drag-and-drop.

См. также QTextDrag, QImageDrag и QDragLeaveEvent.

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

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

Для получения краткого обзора реализации drag-and-drop в Вашем приложении см. Описание drag-and-drop.

См. также QTextDrag, QImageDrag и QDragMoveEvent.

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

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

Для получения краткого обзора реализации drag-and-drop в Вашем приложении см. Описание drag-and-drop.

См. также QTextDrag, QImageDrag и QDropEvent.

void QWidget::ensurePolished () const

Гарантирует, что вид виджета приведен в соответствие с QStyle (т.е. имеет соответствующий шрифт и палитру).

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

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

Если Вы хотите изменить какие-либо настройки после полировки, реализуйте повторно event() и обработчик сообщений типа QEvent::Polish.

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

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

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

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

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

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

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

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

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

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

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

Функция повторно реализована по отношению к QObject.

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

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

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

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

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

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

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

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

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

bool QWidget::focusNextChild ()   [protected]

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

То-же самое, что и focusNextPrevChild(true).

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

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

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

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

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

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

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

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

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

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

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

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

bool QWidget::focusPreviousChild ()   [protected]

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

То-же самое, что и focusNextPrevChild(false).

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

QWidget * QWidget::focusProxy () const

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

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

QWidget * QWidget::focusWidget () const

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

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

QFontInfo QWidget::fontInfo () const

Возвращает информацию о текущем шрифте виджета. Эквивалетно QFontInto(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().

HDC QWidget::getDC () const   [virtual]

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

HDC полученный с помощью getDC() должен быть освобожден с помощью releaseDC().

Внимание: Использование данной функции делает программу не портируемой.

void QWidget::grabKeyboard ()

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

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

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

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

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

void QWidget::grabMouse ()

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

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

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

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

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

focusWidget()

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

void QWidget::grabMouse ( const QCursor & cursor )

Данная перегруженная функция создана для удобства. Ее поведение подобно поведению подобно поведению вышеописанной функции.

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

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

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

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

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

Добавляет сочетание горячих клавиш к системе горячих клавиш Qt, которая будет отслеживать нажатие клавиш key в переданном контексте context. Если контекст context на равен OnApplication, то сочетание горячих клавиш отностится только к виджету; в противном случае сочетание применяется ко всему приложению в целом.

Если key ассоциирован с несколькими виджетами, то, при нажатии key, сообщение QEvent::Shortcut посылается всем виджетам в произвольном порядке, флаг ``ambiguous'', при этом будет установлен в true.

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

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

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

Устанавливает предпочтительную висоту для данного виджета с учетом ширины w.

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

void QWidget::hide ()   [slot]

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

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

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

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

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

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

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

QInputContext * QWidget::inputContext ()

Эта функция возвращает QInputContext для данного виджета. По умолчанию контекст ввода наследуется от родителя виджета. Виджеты верхнего уровня наследуют контекст ввода от QApplication.

Вы можете повторно реализовать данную функцию и установить для виджета специальный контекст ввода с помощью метода setInputContext().

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

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

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

Реализация по умолчанию вызывает e->ignore(), отвергающий сообщения Метода Ввода. Для получения более подробной информации см. QInputMethodEvent.

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

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

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

query определяет, какое свойство проверяется.

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

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

Вставляет действие action в список действий данного виджета перед действием before. Если before равно 0 или before недействительное действие, то действие добавляется в конец.

A QWidget should only have one of each action.

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

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

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

A QWidget should only have one of each action.

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

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

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

bool QWidget::isEnabledTo ( QWidget * ancestor ) const

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

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

isEnabledTo(0) эквивалентно isEnabled().

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

bool QWidget::isHidden () const

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

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

Вместо вызова этой функции можно проверить видимость !isVisible() (обратите внимание на восклицательный знак).

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

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

bool QWidget::isVisibleTo ( 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().

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

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

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

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

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

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

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

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

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

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

Реализация по умолчанию игнорирует все сообщения.

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

QWidget * QWidget::keyboardGrabber ()   [static]

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

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

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

QLayout * QWidget::layout () const

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

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

См. также setLayout(), sizePolicy() и Классы Компоновки.

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

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

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

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

void QWidget::lower ()   [slot]

Понижает виджет до дна стека родительского стека дочерних виджетов.

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

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

bool QWidget::macEvent ( EventHandlerCallRef caller, EventRef event )   [virtual protected]

Данный специальный обработчик сообщений может быть повторно реализован в подклассе для обработки родных сообщений Macintosh, посылаемых отправителем caller и передаваемых через параметр event.

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

Внимание: Использование данной функции делает программу не портируемой на другие платформы.

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

QPoint QWidget::mapFrom ( 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 ( 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().

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

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

m - это метрика для доступа.

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

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

Реализация по умолчанию генерирует сообщение о нормальном нажатии кнопки мыши.

Обратите внимание, что сперва виджет получает сообщение mousePressEvent(), затем mouseReleaseEvent() и только после этого mouseDoubleClickEvent().

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

QWidget * QWidget::mouseGrabber ()   [static]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

QWidget * QWidget::nextInFocusChain () const

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

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

Устанавливает флаги окна виджета в значение flags без сообщения об этом оконной системе.

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

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

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

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

Данная функция является повторно реализованной функцией QPaintDevice.

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

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

Сообщение рисования - это запрос на перерисовку виджета или его части. Это может произойти при repaint() или update() или при затенении и открывании виджетов или по многим другим причинам.

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

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

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

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

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

Обратите внимание: В X11 возможно использование глобальной двойной буферизации с помощью вызова qt_x11_set_global_double_buffer(). Пример использования:

    ...
    extern void qt_x11_set_global_double_buffer(bool);
    qt_x11_set_global_double_buffer(false);
    ...

См. также event(), repaint(), update(), QPainter, QPixmap и QPaintEvent.

QWidget * QWidget::parentWidget () const

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

bool QWidget::qwsEvent ( QWSEvent * event )   [virtual protected]

Данный обработчик сообщений может быть повторно реализован в подклассе для обработки родных сообщений Qtopia Core передаваемых через параметр event.

Если Вы хотите остановить дальнейшую обработку Qt данного сообщения, то Ваша реализация должна возвратить true. Если Вы возвратите false, то данное родное сообщений будет возвращено в Qt, который конвертирует его в сообщение Qt и пошлет виджету.

Внимание: Данная функция делает приложение не портируемым.

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

void QWidget::raise ()   [slot]

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

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

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

void QWidget::releaseDC ( HDC hdc ) const   [virtual]

Освобождает заголовок окна HDC hdc полученный ранее с помощью вызова getDC().

Внимание: Использование данной функции делает приложение не портируемым.

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 из списка действий виджета.

void QWidget::repaint ()   [slot]

Немедленно перерисовывает виджет вызывая paintEvent() если для виджета не запрещено обновление или он не является скрытым.

Мы предлагаем использовать repaint() если Вам нужно немедленно перерисовать виджет. Например, при мультипликации. Как правило, предпочтительнее использовать update() так как это позволяет оптимизировать рисование и предотвратить мерцание.

Предупреждение: Если Вы вызываете 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 & r )

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

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

void QWidget::repaint ( const QRegion & rgn )

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

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

void QWidget::resetInputContext ()   [protected]

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

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

См. также QInputContext and QInputContext::reset().

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

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

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

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

void QWidget::scroll ( int dx, int dy )

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

После прокручивания scroll() посылает сообщение о рисовании той части, которая может быть видима, но еще не нарисована. Например, когда происходит прокрутка на 10 пикселей вправо, десять крайних левых пикселей требуют перерисовки. Сообщение рисования может быть послано немедленно или несколько позже, в зависимости от некоторых эвристических соображений (обратите внимание, что при использовании QApplication::sendPostedEvents() где используется scroll() и move() в комбинации принуждать обрабатывать сообщения о рисовании).

См. также QScrollView и bitBlt().

void QWidget::scroll ( int dx, int dy, const QRect & r )

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

Данная версия функции прокручивает только содержимое прямоугольника r и не передвигает дочерние объекты виджета.

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

См. также QScrollView и bitBlt().

void QWidget::setAttribute ( Qt::WidgetAttribute attribute, bool on = true )

Устанавливает атрибут виджета attribute если on равно true; в противном случает очищает атрибут.

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

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

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

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

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

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

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

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

Изменение зазоров вызывает resizeEvent().

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

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

Запрещает получение сообщений ввода виджетом если disable равно true; в противном случае виджету будет разрешено получать сообщения ввода.

Для получения более подробной информации, см. доступность.

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

void QWidget::setFixedHeight ( int h )

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

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

void QWidget::setFixedSize ( const QSize & s )

Устанавливает минимальный и максимальный размер виджета в s запрещая растяжение и сжатие виджета.

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

В качестве альтернативы, если Вы хотите чтобы виджет имел размер основанный на содержимом, вызовите 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() передает фокус виджету независимо от политики фокуса виджета, но не освобождает захват клавиатуры (см. grabKeyboard()).

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

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

setFocusPolicy() QApplication::focusWidget() grabKeyboard() grabMouse(), {Фокус Клавиатуры}

См. также hasFocus(), clearFocus(), focusInEvent() и focusOutEvent().

void QWidget::setFocus ()   [slot]

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

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

void QWidget::setFocusProxy ( QWidget * w )

Устанавливает виджет w в качестве обработчика фокуса виджета. Если w равно 0, то функция устанавливает данный виджет как виджет не имеющий обработчик фокуса.

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

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

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

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

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

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

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

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

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

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

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

void QWidget::setInputContext ( QInputContext * context )

Данная функция устанавливает контекст ввода виджета в context.

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

void QWidget::setLayout ( QLayout * layout )

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

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

Пример:

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

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

См. также layout() и Layout Classes.

void QWidget::setMask ( const QBitmap & bitmap )

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

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

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

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

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

См. также mask(), clearMask() и windowOpacity().

void QWidget::setMask ( const QRegion & region )

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

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

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

См. также windowOpacity.

void QWidget::setParent ( QWidget * parent )

Устанавливает parent в качестве родителя данного виджета. Данный виджет перемещается в позицию (0, 0) своего нового родителя.

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

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

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

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

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

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

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

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

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

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

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

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

void QWidget::setStyle ( QStyle * style )

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

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

Установка стиля не оказывает никакого влияния на стиль существующих и будущих дочерних объектов.

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

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

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

Перемещает виджет second в цепочке получения фокуса так, чтобы Tab в момент, когда фокус имеет виджет first, фокус переходил к виджету second.

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

    setTabOrder(a, b); // a - b
    setTabOrder(b, c); // a - o b - c
    setTabOrder(c, d); // a - b - c - d

а не так:

    // НЕ ПРАВИЛЬНО
    setTabOrder(c, d); // c - d
    setTabOrder(a, b); // a - b И c - d
    setTabOrder(b, c); // a - b - c, но не c - d

Если 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(). Для видимых окон изменения вступают в силу немедленно. Например, для переключения между полноэкранным и нормальным режимами можно ипользовать следующий код:

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

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

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

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

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

void QWidget::show ()   [slot]

Отображает виджет и его дочерние виджеты. Данная функция эквивалентна setVisible(true).

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

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

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

Срочные сообщения об отображении посылаются виджетам прямо перед отображением. Непосредсвенные сообщения об отображении посылаются в последствии.

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

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

void QWidget::showFullScreen ()   [slot]

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

Вызов данной функции влияет только на окна.

Для возвращения из полноэкранного режима вызывают showNormal().

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

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

Оконные менеджеры X11 следующие пост-ICCCM спецификации должным образом поддерживают полноэкранный режим.

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

void QWidget::showMaximized ()   [slot]

Отображает развернутый виджет.

Вызов данной функции влияет только на окна.

В X11 данная функция в зависимости от оконного менеджера может не работать должным образом. Для разъяснения см. Геометрия Окна.

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

void QWidget::showMinimized ()   [slot]

Отображает свернутый виджет как иконку.

Вызов данной функции влияет только на окна.

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

void QWidget::showNormal ()   [slot]

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

Вызов данной функции влияет только на окна.

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

void QWidget::stackUnder ( QWidget * w )

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

Для выполнения этой функции данный виджет и виджет w должны быть братьями.

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

QStyle * QWidget::style () const

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

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

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

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

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

Реализация по умолчанию игнорирует сообщение.

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

bool QWidget::testAttribute ( Qt::WidgetAttribute attribute ) const

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

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

bool QWidget::underMouse () const

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

Данное свойство не изменяется в течение выполнения операции drag and drop.

См. также enterEvent() и leaveEvent().

void QWidget::update ()   [slot]

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

Данная функция не приводит к немедленной перерисовке; вместо этого она посылает сообщение о перерисовке, которое будет обработано когда Qt вернет управление главному циклу обработки сообщений 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 & r )

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

Данная версия функции обновляет прямоугольник r внутри виджета.

void QWidget::update ( const QRegion & rgn )

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

Данная версия функции обновляет область rgn внутри виджета.

void QWidget::updateGeometry ()

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

Вызывайте данную функция если sizeHint() или sizePolicy() были изменены.

Для явно скрытых виджетов updateGeometry() не выполняется. Система компоновки будет уведомлена как только виджет будет отображен.

void QWidget::updateMicroFocus ()   [protected]

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

См. также QInputContext.

QRegion QWidget::visibleRegion () const

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

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

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

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

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

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

Реализация по умолчанию игнорирует сообщение.

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

bool QWidget::winEvent ( MSG * message, long * result )   [virtual protected]

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

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

Предупреждение: Использование данной функции делает приложение непортируемым.

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

WId QWidget::winId () const

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

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

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

QWidget * QWidget::window () const

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

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

Типичное применение для изменения заголовка окна:

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

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

QString QWidget::windowRole () const

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

См. также setWindowRole(), windowIcon и windowTitle.

Qt::WindowStates QWidget::windowState () const

Возвращает текущее состояние окна. Состояние окна - это комбинация ИЛИ Qt::WindowState: Qt::WindowMinimized, Qt::WindowMaximized, Qt::WindowFullScreen и Qt::WindowActive.

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

Qt::WindowType QWidget::windowType () const

Возвращает тип окна виджета. Идентично windowFlags() & Qt::WindowType_Mask.

См. также windowFlags.

bool QWidget::x11Event ( XEvent * event )   [virtual protected]

Данный специальный обработчик родных сообщений X11 которые передаются через параметр event.

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

Предупреждение: Данная функция непортируема.

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

const QX11Info & QWidget::x11Info () const

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

Предупреждение: Данная функция имеет смысл только в X11.

Qt::HANDLE QWidget::x11PictureHandle () const

Возвращает заголовок X11 рисунка виджета для поддержки XRender. Использование данной функции делает приложение непортируемым. Данная функция возвратит 0 если при компиляции Qt не была установлена поддержка XRender, если расширение XRender не поддерживается в X11-десплее или если заголовок не был создан.


Copyright © 2005 Trolltech Trademarks
Qt 4.1.0
Hosted by uCoz