QGraphicsWidget Class
La clase QGraphicsWidget es la clase base para todos los elementos widget en un QGraphicsScene. Más...
| Cabecera: | #include <QGraphicsWidget> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets)target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| Hereda: | QGraphicsObject y QGraphicsLayoutItem |
| Heredado por: |
Tipos públicos
| enum { Type } |
Propiedades
|
|
Funciones públicas
| QGraphicsWidget(QGraphicsItem *parent = nullptr, Qt::WindowFlags wFlags = Qt::WindowFlags()) | |
| virtual | ~QGraphicsWidget() |
| QList<QAction *> | actions() const |
| void | addAction(QAction *action) |
| void | addActions(const QList<QAction *> &actions) |
| void | adjustSize() |
| bool | autoFillBackground() const |
| Qt::FocusPolicy | focusPolicy() const |
| QGraphicsWidget * | focusWidget() const |
| QFont | font() const |
| void | getWindowFrameMargins(qreal *left, qreal *top, qreal *right, qreal *bottom) const |
| int | grabShortcut(const QKeySequence &sequence, Qt::ShortcutContext context = Qt::WindowShortcut) |
| void | insertAction(QAction *before, QAction *action) |
| void | insertActions(QAction *before, const QList<QAction *> &actions) |
| bool | isActiveWindow() const |
| QGraphicsLayout * | layout() const |
| Qt::LayoutDirection | layoutDirection() const |
| virtual void | paintWindowFrame(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr) |
| QPalette | palette() const |
| QRectF | rect() const |
| void | releaseShortcut(int id) |
| void | removeAction(QAction *action) |
| void | resize(const QSizeF &size) |
| void | resize(qreal w, qreal h) |
| void | setAttribute(Qt::WidgetAttribute attribute, bool on = true) |
| void | setAutoFillBackground(bool enabled) |
| void | setContentsMargins(QMarginsF margins) |
| void | setContentsMargins(qreal left, qreal top, qreal right, qreal bottom) |
| void | setFocusPolicy(Qt::FocusPolicy policy) |
| void | setFont(const QFont &font) |
| virtual void | setGeometry(const QRectF &rect) override |
| void | setGeometry(qreal x, qreal y, qreal w, qreal h) |
| void | setLayout(QGraphicsLayout *layout) |
| void | setLayoutDirection(Qt::LayoutDirection direction) |
| void | setPalette(const QPalette &palette) |
| void | setShortcutAutoRepeat(int id, bool enabled = true) |
| void | setShortcutEnabled(int id, bool enabled = true) |
| void | setStyle(QStyle *style) |
| void | setWindowFlags(Qt::WindowFlags wFlags) |
| void | setWindowFrameMargins(QMarginsF margins) |
| void | setWindowFrameMargins(qreal left, qreal top, qreal right, qreal bottom) |
| void | setWindowTitle(const QString &title) |
| QSizeF | size() const |
| QStyle * | style() const |
| bool | testAttribute(Qt::WidgetAttribute attribute) const |
| void | unsetLayoutDirection() |
| void | unsetWindowFrameMargins() |
| Qt::WindowFlags | windowFlags() const |
| QRectF | windowFrameGeometry() const |
| QRectF | windowFrameRect() const |
| QString | windowTitle() const |
| Qt::WindowType | windowType() const |
Funciones públicas reimplementadas
| virtual QRectF | boundingRect() const override |
| virtual void | getContentsMargins(qreal *left, qreal *top, qreal *right, qreal *bottom) const override |
| virtual void | paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr) override |
| virtual QPainterPath | shape() const override |
| virtual int | type() const override |
Ranuras públicas
| bool | close() |
Señales
| void | geometryChanged() |
| void | layoutChanged() |
Miembros públicos estáticos
| void | setTabOrder(QGraphicsWidget *first, QGraphicsWidget *second) |
Funciones protegidas
| virtual void | changeEvent(QEvent *event) |
| virtual void | closeEvent(QCloseEvent *event) |
| virtual bool | focusNextPrevChild(bool next) |
| virtual void | grabKeyboardEvent(QEvent *event) |
| virtual void | grabMouseEvent(QEvent *event) |
| virtual void | hideEvent(QHideEvent *event) |
| virtual void | initStyleOption(QStyleOption *option) const |
| virtual void | moveEvent(QGraphicsSceneMoveEvent *event) |
| virtual void | polishEvent() |
| virtual void | resizeEvent(QGraphicsSceneResizeEvent *event) |
| virtual void | showEvent(QShowEvent *event) |
| virtual void | ungrabKeyboardEvent(QEvent *event) |
| virtual void | ungrabMouseEvent(QEvent *event) |
| virtual bool | windowFrameEvent(QEvent *event) |
| virtual Qt::WindowFrameSection | windowFrameSectionAt(const QPointF &pos) const |
Funciones protegidas reimplementadas
| virtual bool | event(QEvent *event) override |
| virtual void | focusInEvent(QFocusEvent *event) override |
| virtual void | focusOutEvent(QFocusEvent *event) override |
| virtual void | hoverLeaveEvent(QGraphicsSceneHoverEvent *event) override |
| virtual void | hoverMoveEvent(QGraphicsSceneHoverEvent *event) override |
| virtual QVariant | itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value) override |
| virtual bool | sceneEvent(QEvent *event) override |
| virtual QSizeF | sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const override |
| virtual void | updateGeometry() override |
Descripción Detallada
QGraphicsWidget es un elemento base extendido que proporciona funcionalidad extra sobre QGraphicsItem. Es similar a QWidget en muchos aspectos:
- Proporciona un palette, un font y un style().
- Tiene un geometry() definido.
- Admite diseños con setLayout() y layout().
- Soporta atajos y acciones con grabShortcut() y insertAction()
A diferencia de QGraphicsItem, QGraphicsWidget no es una clase abstracta; puedes crear instancias de un QGraphicsWidget sin tener que subclasificarlo. Esta aproximación es útil para widgets que solo sirven para organizar widgets hijos en un layout.
QGraphicsWidget puede usarse como elemento base para tu propio elemento personalizado si requieres un manejo avanzado del foco de entrada, por ejemplo, foco y activación de pestañas, o layouts.
Dado que QGraphicsWidget se parece a QWidget y tiene una API similar, es más fácil portar un widget de QWidget a QGraphicsWidget, en lugar de QGraphicsItem.
Nota: Los widgets basados enQWidget pueden incrustarse directamente en QGraphicsScene utilizando QGraphicsProxyWidget.
Las diferencias notables entre QGraphicsWidget y QWidget son:
| QGraphicsWidget | QWidget |
|---|---|
| Las coordenadas y la geometría se definen con qreals (dobles o flotantes, dependiendo de la plataforma). | QWidget utiliza geometría entera (QPoint, QRect). |
| El widget ya es visible por defecto; no es necesario llamar a show() para mostrar el widget. | QWidget está oculto por defecto hasta que se llame a show(). |
| Se admite un subconjunto de atributos del widget. | Se admiten todos los atributos de widget. |
| El estilo predeterminado de un elemento de nivel superior es QGraphicsScene::style | El estilo predeterminado de un widget de nivel superior es QApplication::style |
| La Vista Gráfica proporciona un marco personalizado de arrastrar y soltar, diferente de QWidget. | Arrastrar y soltar estándar. |
| Los elementos de widget no admiten la modalidad. | Soporte completo de modalidad. |
QGraphicsWidget soporta un subconjunto de atributos de widget de Qt, (Qt::WidgetAttribute), como se muestra en la siguiente tabla. Cualquier atributo no listado en esta tabla no está soportado, o no se utiliza.
| Widget Atributo | Uso |
|---|---|
| Qt::WA_SetLayoutDirection | Establecido por setLayoutDirection(), borrado por unsetLayoutDirection(). Puede probar este atributo para comprobar si al widget se le ha asignado explícitamente un layoutDirection. Si el atributo no está establecido, se hereda el layoutDirection(). |
| Qt::WA_RightToLeft | Se activa con setLayoutDirection(). Heredado del padre/escena. Si se establece, el diseño del widget ordenará los widgets dispuestos horizontalmente de derecha a izquierda. |
| Qt::WA_SetStyle | Activado y desactivado por setStyle(). Si este atributo está definido, se ha asignado explícitamente un estilo al widget. Si no está definido, el widget utilizará el estilo de la escena o de la aplicación. |
| Qt::WA_Resized | Fijado por setGeometry() y resize(). |
| Qt::WA_SetPalette | Fijado por setPalette(). |
| Qt::WA_SetFont | Fijado por setFont(). |
| Qt::WA_WindowPropagation | Permite la propagación a los widgets de ventana. |
Aunque QGraphicsWidget hereda tanto de QObject como de QGraphicsItem, debes utilizar las funciones proporcionadas por QGraphicsItem, no QObject, para gestionar las relaciones entre elementos padre e hijo. Estas funciones controlan el orden de apilamiento de los elementos así como su propiedad.
Nota: La función QObject::parent() debería devolver siempre nullptr para QGraphicsWidgets, pero esta política no está estrictamente definida.
Ver también QGraphicsProxyWidget, QGraphicsItem, y Widgets y Layouts.
Documentación de tipos de miembros
[anonymous] enum
El valor devuelto por la función virtual type().
| Constante | Valor | Descripción |
|---|---|---|
QGraphicsWidget::Type | 11 | Un elemento del widget gráfico |
Documentación de propiedades
autoFillBackground : bool
Esta propiedad mantiene si el fondo del widget se rellena automáticamente.
Si se activa, esta propiedad hará que Qt rellene el fondo del widget antes de invocar el método paint(). El color utilizado está definido por el rol de color QPalette::Window del widget palette.
Además, las ventanas siempre se rellenan con QPalette::Window, a menos que se establezcan los atributos WA_OpaquePaintEvent o WA_NoSystemBackground.
Por defecto, esta propiedad es false.
Funciones de acceso:
| bool | autoFillBackground() const |
| void | setAutoFillBackground(bool enabled) |
Véase también Qt::WA_OpaquePaintEvent y Qt::WA_NoSystemBackground.
focusPolicy : Qt::FocusPolicy
Esta propiedad contiene la forma en que el widget acepta el foco del teclado
La política de enfoque es Qt::TabFocus si el widget acepta el enfoque del teclado por tabulación, Qt::ClickFocus si el widget acepta el enfoque por clic, Qt::StrongFocus si acepta ambos, y Qt::NoFocus (por defecto) si no acepta el enfoque en absoluto.
Debes activar el foco de teclado para un widget si procesa eventos de teclado. Esto se hace normalmente desde el constructor del widget. Por ejemplo, el constructor QLineEdit llama a setFocusPolicy(Qt::StrongFocus).
Si activas una política de enfoque (es decir, no Qt::NoFocus), QGraphicsWidget activará automáticamente la bandera ItemIsFocusable. Si activas Qt::NoFocus en un widget, se borrará el indicador ItemIsFocusable. Si el widget tiene actualmente el foco del teclado, el widget perderá automáticamente el foco.
Funciones de acceso:
| Qt::FocusPolicy | focusPolicy() const |
| void | setFocusPolicy(Qt::FocusPolicy policy) |
Ver también focusInEvent(), focusOutEvent(), keyPressEvent(), keyReleaseEvent(), y enabled.
font : QFont
Esta propiedad contiene la fuente del widget
Esta propiedad proporciona la fuente del widget.
QFont consiste en propiedades de fuente que han sido definidas explícitamente y propiedades heredadas implícitamente del padre del widget. Por lo tanto, font() puede devolver una fuente diferente comparada con la establecida con setFont(). Este esquema permite definir entradas individuales en una fuente sin afectar a las entradas heredadas de la fuente.
Cuando la fuente de un widget cambia, resuelve sus entradas contra su widget padre. Si el widget no tiene un widget padre, resuelve sus entradas contra la escena. A continuación, el widget se envía a sí mismo un evento FontChange y notifica a todos sus descendientes para que puedan resolver sus fuentes también.
Por defecto, esta propiedad contiene la fuente por defecto de la aplicación.
Funciones de acceso:
| QFont | font() const |
| void | setFont(const QFont &font) |
Véase también QApplication::font(), QGraphicsScene::font, y QFont::resolve().
geometry : QRectF
Esta propiedad contiene la geometría del widget
Establece la geometría del elemento en rect. La posición y el tamaño del elemento se modifican como resultado de la llamada a esta función. Primero se mueve el elemento y luego se cambia su tamaño.
Un efecto secundario de llamar a esta función es que el widget recibirá un evento de movimiento y un evento de redimensionamiento. Además, si el widget tiene un diseño asignado, el diseño se activará.
Funciones de acceso:
| virtual void | setGeometry(const QRectF &rect) override |
| void | setGeometry(qreal x, qreal y, qreal w, qreal h) |
Señal de notificador:
| void | geometryChanged() |
Véase también geometry() y resize().
layout : QGraphicsLayout*
Esta propiedad contiene el diseño del widget
Cualquier gestor de diseño existente se elimina antes de asignar el nuevo diseño. Si layout es nullptr, el widget se queda sin diseño. Las geometrías de los subwidgets existentes no se verán afectadas.
QGraphicsWidget toma posesión de layout.
Todos los widgets actualmente gestionados por layout o todos sus sub-diseños, son automáticamente reparentados a este elemento. El diseño se invalida y las geometrías de los widgets hijos se ajustan de acuerdo con geometry() y contentsMargins() de este elemento. Los widgets child que no estén gestionados explícitamente por layout no se verán afectados por el diseño después de que éste haya sido asignado a este widget.
Si ningún layout está gestionando actualmente este widget, layout() devolverá nullptr.
Funciones de acceso:
Señal de notificador:
| void | layoutChanged() |
layoutDirection : Qt::LayoutDirection
Esta propiedad contiene la dirección del diseño de este widget.
Esta propiedad modifica el atributo Qt::WA_RightToLeft de este widget y de todos sus descendientes. También establece el atributo Qt::WA_SetLayoutDirection de este widget.
La dirección de diseño del widget determina el orden en el que el gestor de diseño organiza horizontalmente los subwidgets de este widget. El valor predeterminado depende del idioma y la configuración regional de la aplicación, y suele estar en la misma dirección en la que se leen y escriben las palabras. Con Qt::LeftToRight, el diseño empieza a colocar los subwidgets desde el lado izquierdo de este widget hacia la derecha. Qt::RightToLeft hace lo contrario - el diseño colocará los widgets empezando por el borde derecho moviéndose hacia la izquierda.
Los subwidgets heredan la dirección de su diseño del padre. Los widgets de nivel superior heredan la dirección de su diseño de QGraphicsScene::layoutDirection. Si cambias la dirección de diseño de un widget llamando a setLayoutDirection(), el widget se enviará a sí mismo un evento LayoutDirectionChange, y luego propagará la nueva dirección de diseño a todos sus descendientes.
Funciones de acceso:
| Qt::LayoutDirection | layoutDirection() const |
| void | setLayoutDirection(Qt::LayoutDirection direction) |
| void | unsetLayoutDirection() |
Véase también QWidget::layoutDirection y QApplication::layoutDirection.
maximumSize : QSizeF
Esta propiedad contiene el tamaño máximo del widget
Véase también setMaximumSize(), maximumSize(), minimumSize, y preferredSize.
minimumSize : QSizeF
Esta propiedad mantiene el tamaño mínimo del widget
Véase también setMinimumSize(), minimumSize(), preferredSize, y maximumSize.
palette : QPalette
Esta propiedad contiene la paleta del widget
Esta propiedad proporciona la paleta del widget. La paleta proporciona colores y pinceles para grupos de colores (por ejemplo, QPalette::Button) y estados (por ejemplo, QPalette::Inactive), definiendo vagamente el aspecto general del widget y sus hijos.
QPalette consiste en grupos de colores que han sido explícitamente definidos, y grupos que son implícitamente heredados del widget padre. Debido a esto, palette() puede devolver una paleta diferente a la que se ha establecido con setPalette(). Este esquema permite definir entradas individuales en una paleta sin afectar a las entradas heredadas de la paleta.
Cuando la paleta de un widget cambia, resuelve sus entradas contra su widget padre, o si no tiene un widget padre, resuelve contra la escena. A continuación, se envía a sí mismo un evento PaletteChange, y notifica a todos sus descendientes para que puedan resolver sus paletas también.
Por defecto, esta propiedad contiene la paleta por defecto de la aplicación.
Funciones de acceso:
| QPalette | palette() const |
| void | setPalette(const QPalette &palette) |
Véase también QGuiApplication::palette(), QGraphicsScene::palette, y QPalette::resolve().
preferredSize : QSizeF
Esta propiedad contiene el tamaño preferido del widget
Véase también setPreferredSize(), preferredSize(), minimumSize, y maximumSize.
size : QSizeF
Esta propiedad contiene el tamaño del widget
Al llamar a resize() se redimensiona el widget a un size delimitado por minimumSize() y maximumSize(). Esta propiedad sólo afecta a la anchura y altura del widget (por ejemplo, sus bordes derecho e inferior); la posición y la esquina superior izquierda del widget no se ven afectadas.
Cambiar el tamaño de un widget hace que éste reciba inmediatamente un evento GraphicsSceneResize con el tamaño anterior y el nuevo del widget. Si el widget tiene un diseño asignado cuando llega este evento, el diseño se activará y actualizará automáticamente la geometría de cualquier widget hijo.
Esta propiedad no afecta al diseño del widget padre. Si el propio widget está gestionado por un layout padre; por ejemplo, tiene un widget padre con un layout asignado, ese layout no se activará.
Por defecto, esta propiedad contiene un tamaño con anchura y altura cero.
Funciones de acceso:
| QSizeF | size() const |
| void | resize(const QSizeF &size) |
| void | resize(qreal w, qreal h) |
Señal del notificador:
| void | geometryChanged() |
Véase también setGeometry(), QGraphicsSceneResizeEvent, y QGraphicsLayout.
sizePolicy : QSizePolicy
Esta propiedad contiene la política de tamaño para el widget
Véase también sizePolicy(), setSizePolicy(), y QWidget::sizePolicy().
windowFlags : Qt::WindowFlags
Esta propiedad contiene las banderas de ventana del widget
Las banderas de ventana son una combinación de un tipo de ventana (por ejemplo, Qt::Dialog) y varias banderas que dan pistas sobre el comportamiento de la ventana. El comportamiento depende de la plataforma.
Por defecto, esta propiedad no contiene indicadores de ventana.
Las ventanas son paneles. Si activa el indicador Qt::Window, el indicador ItemIsPanel se activará automáticamente. Si desactiva el indicador Qt::Window, el indicador ItemIsPanel también se desactiva. Tenga en cuenta que el indicador ItemIsPanel puede activarse independientemente de Qt::Window.
Funciones de acceso:
| Qt::WindowFlags | windowFlags() const |
| void | setWindowFlags(Qt::WindowFlags wFlags) |
Véase también isWindow() y isPanel().
windowTitle : QString
Esta propiedad contiene el título de la ventana (caption).
Esta propiedad sólo se utiliza para las ventanas.
Por defecto, si no se ha establecido ningún título, esta propiedad contiene una cadena vacía.
Funciones de acceso:
| QString | windowTitle() const |
| void | setWindowTitle(const QString &title) |
Documentación de las funciones miembro
QGraphicsWidget::QGraphicsWidget(QGraphicsItem *parent = nullptr, Qt::WindowFlags wFlags = Qt::WindowFlags())
Construye una instancia de QGraphicsWidget. El argumento opcional parent se pasa al constructor de QGraphicsItem. El argumento opcional wFlags especifica las banderas de ventana del widget (por ejemplo, si el widget debe ser una ventana, una herramienta, un popup, etc).
[virtual noexcept] QGraphicsWidget::~QGraphicsWidget()
Destruye la instancia QGraphicsWidget.
QList<QAction *> QGraphicsWidget::actions() const
Devuelve la lista (posiblemente vacía) de las acciones de este widget.
Véase también insertAction(), removeAction(), QWidget::actions(), QAction::associatedWidgets() y QAction::associatedGraphicsWidgets().
void QGraphicsWidget::addAction(QAction *action)
Añade la acción action a la lista de acciones de este widget.
Todos los QGraphicsWidgets tienen una lista de QActions, sin embargo pueden ser representados gráficamente de muchas maneras diferentes. El uso por defecto de la lista QAction (devuelta por actions()) es crear un contexto QMenu.
Un QGraphicsWidget sólo debe tener una de cada acción y añadir una acción que ya tenga no hará que la misma acción esté dos veces en el widget.
Véase también removeAction(), insertAction(), actions() y QWidget::addAction().
void QGraphicsWidget::addActions(const QList<QAction *> &actions)
Añade las acciones actions a la lista de acciones de este widget.
Véase también removeAction(), QMenu, addAction(), y QWidget::addActions().
void QGraphicsWidget::adjustSize()
Ajusta el tamaño del widget a su sugerencia de tamaño preferido efectivo.
Esta función se llama implícitamente cuando el elemento se muestra por primera vez.
Véase también effectiveSizeHint() y Qt::MinimumSize.
[override virtual] QRectF QGraphicsWidget::boundingRect() const
Reimplementa: QGraphicsItem::boundingRect() const.
[virtual protected] void QGraphicsWidget::changeEvent(QEvent *event)
Este manejador de eventos puede ser reimplementado para manejar cambios de estado.
El estado que se cambia en este evento se puede recuperar a través de event.
Los eventos de cambio incluyen: QEvent::ActivationChange, QEvent::EnabledChange, QEvent::FontChange, QEvent::StyleChange, QEvent::PaletteChange, QEvent::ParentChange, QEvent::LayoutDirectionChange, y QEvent::ContentsRectChange.
[slot] bool QGraphicsWidget::close()
Llama a esta función para cerrar el widget.
Devuelve true si el widget se cerró; en caso contrario devuelve false. Esta ranura enviará primero un QCloseEvent al widget, que puede o no aceptar el evento. Si el evento fue ignorado, no pasará nada. Si el evento fue aceptado, se enviará hide() al widget.
Si el widget tiene establecido el atributo Qt::WA_DeleteOnClose será eliminado.
[virtual protected] void QGraphicsWidget::closeEvent(QCloseEvent *event)
Este manejador de eventos, para event, puede ser reimplementado en una subclase para recibir eventos de cierre de widgets. La implementación por defecto acepta el evento.
Véase también close() y QCloseEvent.
[override virtual protected] bool QGraphicsWidget::event(QEvent *event)
Reimplementa: QGraphicsObject::event(QEvent *ev).
Maneja el event. QGraphicsWidget maneja los siguientes eventos:
| Evento | Uso |
|---|---|
| Polaco | Entregado al widget algún tiempo después de haber sido mostrado. |
| GraphicsSceneMove | Entregado al widget después de que su posición local haya cambiado. |
| GraphicsSceneResize | Entregado al widget después de que su tamaño haya cambiado. |
| Mostrar | Enviado al widget antes de que se haya mostrado. |
| Ocultar | Entregado al widget después de que se haya ocultado. |
| CambioPaleta | Enviado al widget después de que su paleta haya cambiado. |
| CambioFuente | Entregado al widget después de que su fuente haya cambiado. |
| CambioDeHabilitado | Enviado al widget después de que cambie su estado de habilitación. |
| CambioDeEstilo | Enviado al widget después de que su estilo haya cambiado. |
| CambioDirecciónDisposición | Entregado al widget después de que su dirección de diseño haya cambiado. |
| ContentsRectChange | Enviado al widget después de que sus márgenes/rectas de contenido hayan cambiado. |
[override virtual protected] void QGraphicsWidget::focusInEvent(QFocusEvent *event)
Reimplementa: QGraphicsItem::focusInEvent(QFocusEvent *event).
[virtual protected] bool QGraphicsWidget::focusNextPrevChild(bool next)
Busca un nuevo widget al que dar el foco del teclado, según corresponda para Tab y Shift+Tab, y devuelve true si puede encontrar un nuevo widget; devuelve false en caso contrario. Si next es verdadero, esta función busca hacia adelante; si next es falso, busca hacia atrás.
A veces, querrás reimplementar esta función para proporcionar un manejo especial del foco para tu widget y sus subwidgets. Por ejemplo, un navegador web podría reimplementarla para mover su enlace activo actual hacia delante o hacia atrás, y llamar a la implementación base sólo cuando alcance el último o el primer enlace de la página.
Los widgets hijos llaman a focusNextPrevChild() en sus widgets padres, pero sólo la ventana que contiene los widgets hijos decide dónde redirigir el foco. Al reimplementar esta función para un objeto, se obtiene el control del desplazamiento del foco para todos los widgets hijos.
Véase también focusPolicy().
[override virtual protected] void QGraphicsWidget::focusOutEvent(QFocusEvent *event)
Reimplementa: QGraphicsItem::focusOutEvent(QFocusEvent *event).
QGraphicsWidget *QGraphicsWidget::focusWidget() const
Si este widget, un hijo o descendiente de este widget tiene actualmente el foco de entrada, esta función devolverá un puntero a ese widget. Si ningún widget descendiente tiene el foco de entrada, se devuelve nullptr.
Véase también QGraphicsItem::focusItem() y QWidget::focusWidget().
[signal] void QGraphicsWidget::geometryChanged()
Esta señal se emite cada vez que se cambia la geometría en setGeometry().
[override virtual] void QGraphicsWidget::getContentsMargins(qreal *left, qreal *top, qreal *right, qreal *bottom) const
Reimplementa: QGraphicsLayoutItem::getContentsMargins(qreal *left, qreal *top, qreal *right, qreal *bottom) const.
Obtiene los márgenes del contenido del widget. Los márgenes se almacenan en left, top, right y bottom, como punteros a qreals. Cada argumento puede omitirse pasando nullptr.
Véase también setContentsMargins().
void QGraphicsWidget::getWindowFrameMargins(qreal *left, qreal *top, qreal *right, qreal *bottom) const
Obtiene los márgenes del marco de la ventana del widget. Los márgenes se almacenan en left, top, right y bottom como punteros a qreals. Cada argumento puede omitirse pasando nullptr.
Véase también setWindowFrameMargins() y windowFrameRect().
[virtual protected] void QGraphicsWidget::grabKeyboardEvent(QEvent *event)
Este manejador de eventos, para event, puede ser reimplementado en una subclase para recibir notificaciones de eventos QEvent::GrabKeyboard.
Véase también grabKeyboard() y grabMouse().
[virtual protected] void QGraphicsWidget::grabMouseEvent(QEvent *event)
Este manejador de eventos, para event, puede ser reimplementado en una subclase para recibir notificaciones de eventos QEvent::GrabMouse.
Véase también grabMouse() y grabKeyboard().
int QGraphicsWidget::grabShortcut(const QKeySequence &sequence, Qt::ShortcutContext context = Qt::WindowShortcut)
Añade un acceso directo al sistema de accesos directos de Qt que busca la tecla sequence en la dirección context. Si context es Qt::ApplicationShortcut, el acceso directo se aplica a toda la aplicación. De lo contrario, es local a este widget, Qt::WidgetShortcut, o a la propia ventana, Qt::WindowShortcut. Para los widgets que no forman parte de una ventana (es decir, los widgets de nivel superior y sus hijos), los atajos Qt::WindowShortcut se aplican a la escena.
Si la misma tecla sequence ha sido capturada por varios widgets, cuando se produce la tecla sequence se envía un evento QEvent::Shortcut a todos los widgets a los que se aplica en un orden no determinista, pero con el indicador ``ambiguo'' puesto a verdadero.
Advertencia: Normalmente no debería necesitar utilizar esta función; en su lugar, cree QActions con las secuencias de teclas de acceso directo que necesite (si también desea opciones de menú y botones de barra de herramientas equivalentes), o cree QShortcuts si sólo necesita secuencias de teclas. Tanto QAction como QShortcut manejan todo el filtrado de eventos por ti, y proporcionan señales que se activan cuando el usuario activa la secuencia de teclas, por lo que son mucho más fáciles de usar que esta función de bajo nivel.
Véase también releaseShortcut(), setShortcutEnabled(), y QWidget::grabShortcut().
[virtual protected] void QGraphicsWidget::hideEvent(QHideEvent *event)
Este manejador de eventos, para eventos Hide, es entregado después de que el widget ha sido ocultado, por ejemplo, setVisible(false) ha sido llamado para el widget o uno de sus ancestros cuando el widget fue mostrado previamente.
Puedes reimplementar este manejador de eventos para detectar cuando tu widget está oculto. Llamar a QEvent::accept() o QEvent::ignore() en event no tiene ningún efecto.
Ver también showEvent(), QWidget::hideEvent(), y ItemVisibleChange.
[override virtual protected] void QGraphicsWidget::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
Reimplementa: QGraphicsItem::hoverLeaveEvent(QGraphicsSceneHoverEvent *event).
[override virtual protected] void QGraphicsWidget::hoverMoveEvent(QGraphicsSceneHoverEvent *event)
Reimplementa: QGraphicsItem::hoverMoveEvent(QGraphicsSceneHoverEvent *event).
[virtual protected] void QGraphicsWidget::initStyleOption(QStyleOption *option) const
Rellena un objeto de opción de estilo para este widget basándose en su estado actual, y almacena el resultado en option. La implementación por defecto rellena option con las siguientes propiedades.
| Opción de estilo Propiedad | Valor |
|---|---|
| estado & QStyle::State_Enabled | Corresponde a QGraphicsItem::isEnabled(). |
| estado & QStyle::State_HasFocus | Corresponde a QGraphicsItem::hasFocus(). |
| estado & QStyle::State_MouseOver | Corresponde a QGraphicsItem::isUnderMouse(). |
| dirección | Corresponde a QGraphicsWidget::layoutDirection(). |
| rect | Corresponde a QGraphicsWidget::rect().toRect(). |
| paleta | Corresponde a QGraphicsWidget::palette(). |
| fontMetrics | Corresponde a QFontMetrics(QGraphicsWidget::font()). |
Las subclases de QGraphicsWidget deberían llamar a la implementación base, y luego probar el tipo de option usando qstyleoption_cast<>() o probar QStyleOption::Type antes de almacenar las opciones específicas del widget.
Por ejemplo:
void MyGroupBoxWidget::initStyleOption(QStyleOption *option) const { QGraphicsWidget::initStyleOption(option); if (QStyleOptionGroupBox *box = qstyleoption_cast<QStyleOptionGroupBox *>(option)) { // Add group box specific state. box->flat = isFlat(); ... } }
Véase también QStyleOption::initFrom().
void QGraphicsWidget::insertAction(QAction *before, QAction *action)
Inserta la acción action en la lista de acciones de este widget, antes de la acción before. Añade la acción si before es nullptr o before no es una acción válida para este widget.
Un QGraphicsWidget sólo debe tener una de cada acción.
Véase también removeAction(), addAction(), QMenu, actions(), y QWidget::insertActions().
void QGraphicsWidget::insertActions(QAction *before, const QList<QAction *> &actions)
Inserta la acción actions en la lista de acciones de este widget, antes de la acción before. Añade la acción si before es nullptr o before no es una acción válida para este widget.
Un QGraphicsWidget puede tener como máximo una de cada acción.
Véase también removeAction(), QMenu, insertAction(), y QWidget::insertActions().
bool QGraphicsWidget::isActiveWindow() const
Devuelve true si la ventana de este widget está en la ventana activa, o si el widget no tiene ventana pero está en una escena activa (es decir, una escena que tiene actualmente el foco).
La ventana activa es la ventana que contiene un widget hijo que tiene actualmente el foco de entrada, o que tiene él mismo el foco de entrada.
Véase también QGraphicsScene::activeWindow(), QGraphicsScene::setActiveWindow() y isActive().
[override virtual protected] QVariant QGraphicsWidget::itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value)
Reimplementa: QGraphicsItem::itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value).
QGraphicsWidget utiliza la implementación base de esta función para capturar y entregar eventos relacionados con cambios de estado en el item. Por ello, es muy importante que las subclases llamen a la implementación base.
change especifica el tipo de cambio, y value es el nuevo valor.
Por ejemplo, QGraphicsWidget utiliza ItemVisibleChange para entregar eventos Show y Hide, ItemPositionHasChanged para entregar eventos Move, y ItemParentChange tanto para entregar eventos ParentChange, como para gestionar la cadena de enfoque.
QGraphicsWidget activa la bandera ItemSendsGeometryChanges por defecto para seguir los cambios de posición.
Véase también QGraphicsItem::itemChange().
QGraphicsLayout *QGraphicsWidget::layout() const
Devuelve el diseño de este widget, o nullptr si no hay ningún diseño gestionando este widget.
Nota: Función Getter para la propiedad layout.
Véase también setLayout().
[virtual protected] void QGraphicsWidget::moveEvent(QGraphicsSceneMoveEvent *event)
Este manejador de eventos, para eventos GraphicsSceneMove, se entrega después de que el widget se ha movido (por ejemplo, su posición local ha cambiado).
Este evento sólo se produce cuando el elemento se mueve localmente. Llamar a setTransform() o mover cualquiera de los ancestros del elemento no afecta a la posición local del elemento.
Puedes reimplementar este manejador de eventos para detectar cuando tu widget se ha movido. Llamar a QEvent::accept() o QEvent::ignore() sobre event no tiene ningún efecto.
Ver también ItemPositionChange y ItemPositionHasChanged.
[override virtual] void QGraphicsWidget::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr)
Reimplementa: QGraphicsItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget).
[virtual] void QGraphicsWidget::paintWindowFrame(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr)
Esta función virtual es llamada por QGraphicsScene para dibujar el marco de la ventana para las ventanas que utilizan painter, option, y widget, en coordenadas locales. La implementación base utiliza el estilo actual para representar el marco y la barra de título.
Puedes reimplementar esta función en una subclase de QGraphicsWidget para proporcionar una representación personalizada del marco de la ventana del widget.
Véase también QGraphicsItem::paint().
[virtual protected] void QGraphicsWidget::polishEvent()
Este evento es enviado al elemento por la escena en algún momento después de que haya sido construido, pero antes de que se muestre o se acceda a él a través de la escena. Puedes utilizar este manejador de eventos para hacer inicializaciones de última hora del widget que requieran que el elemento esté completamente construido.
La implementación base no hace nada.
QRectF QGraphicsWidget::rect() const
Devuelve el rectángulo local del elemento como QRectF. Esta función es equivalente a QRectF(QPointF(), size()).
Véase también setGeometry() y resize().
void QGraphicsWidget::releaseShortcut(int id)
Elimina el acceso directo con la dirección id del sistema de accesos directos de Qt. El widget dejará de recibir eventos QEvent::Shortcut para la secuencia de teclas del acceso directo (a menos que tenga otros accesos directos con la misma secuencia de teclas).
Advertencia: Normalmente no deberías necesitar usar esta función ya que el sistema de atajos de Qt elimina los atajos automáticamente cuando se destruye su widget padre. Es mejor usar QAction o QShortcut para manejar los atajos, ya que son más fáciles de usar que esta función de bajo nivel. Tenga en cuenta también que se trata de una operación costosa.
Véase también grabShortcut(), setShortcutEnabled(), y QWidget::releaseShortcut().
void QGraphicsWidget::removeAction(QAction *action)
Elimina la acción action de la lista de acciones de este widget.
Véase también insertAction(), actions() y QWidget::removeAction().
void QGraphicsWidget::resize(qreal w, qreal h)
Construye un redimensionamiento con los datos width (w) y height (h). Esta función es equivalente a llamar a resize(QSizeF(w, h)).
Nota: Función Setter para la propiedad size.
Se trata de una función sobrecargada.
Véase también setGeometry() y setTransform().
[virtual protected] void QGraphicsWidget::resizeEvent(QGraphicsSceneResizeEvent *event)
Este manejador de eventos, para eventos GraphicsSceneResize, se entrega después de que el widget ha sido redimensionado (es decir, su tamaño local ha cambiado). event contiene tanto el tamaño antiguo como el nuevo.
Este evento sólo se produce cuando el widget cambia de tamaño localmente; llamar a setTransform() en el widget o en cualquiera de sus ancestros o vistas, no afecta al tamaño local del widget.
Puedes reimplementar este manejador de eventos para detectar cuando tu widget ha sido redimensionado. Llamar a QEvent::accept() o QEvent::ignore() en event no tiene ningún efecto.
Véase también geometry() y setGeometry().
[override virtual protected] bool QGraphicsWidget::sceneEvent(QEvent *event)
Reimplementa: QGraphicsItem::sceneEvent(QEvent *event).
QGraphicsWidgetLa implementación de sceneEvent() de 's simplemente pasa event a QGraphicsWidget::event(). Puedes manejar todos los eventos para tu widget en event() o en cualquiera de las funciones de conveniencia; no deberías tener que reimplementar esta función en una subclase de QGraphicsWidget.
Devuelve true si event ha sido reconocido y procesado; en caso contrario, devuelve false.
Véase también QGraphicsItem::sceneEvent().
void QGraphicsWidget::setAttribute(Qt::WidgetAttribute attribute, bool on = true)
Si on es verdadero, esta función habilita attribute; de lo contrario attribute se deshabilita.
Consulte la documentación de la clase QGraphicsWidget para obtener una lista completa de los atributos soportados y para qué sirven.
Véase también testAttribute() y QWidget::setAttribute().
void QGraphicsWidget::setContentsMargins(QMarginsF margins)
Establece los márgenes de contenido del widget en margins.
Los márgenes de contenido son utilizados por el diseño asignado para definir la colocación de subwidgets y diseños. Los márgenes son especialmente útiles para widgets que limitan los subwidgets a sólo una sección de su propia geometría. Por ejemplo, un cuadro de grupo con un diseño colocará los subwidgets dentro de su marco, pero por debajo del título.
Al cambiar los márgenes de contenido de un widget siempre se activará un update(), y cualquier diseño asignado se activará automáticamente. El widget recibirá entonces un evento ContentsRectChange.
Véase también getContentsMargins() y setGeometry().
void QGraphicsWidget::setContentsMargins(qreal left, qreal top, qreal right, qreal bottom)
Establece los márgenes de contenido del widget en left, top, right y bottom.
Se trata de una función sobrecargada.
void QGraphicsWidget::setGeometry(qreal x, qreal y, qreal w, qreal h)
Esta función es equivalente a llamar a setGeometry(QRectF( x, y, w, h)).
Nota: Función setter para la propiedad geometry.
Véase también geometry() y resize().
void QGraphicsWidget::setLayout(QGraphicsLayout *layout)
Establece el diseño de este widget en layout. Cualquier gestor de diseño existente se elimina antes de asignar el nuevo diseño. Si layout es nullptr, el widget se deja sin diseño. Las geometrías de los subwidgets existentes no se verán afectadas.
Todos los widgets actualmente gestionados por layout o todos sus sub-diseños, son automáticamente reparentados a este elemento. El diseño se invalida y las geometrías de los widgets hijos se ajustan de acuerdo con geometry() y contentsMargins() de este elemento. Los hijos que no son gestionados explícitamente por layout no se ven afectados por el diseño después de que haya sido asignado a este widget.
QGraphicsWidget toma la propiedad de layout.
Nota: Función setter para la propiedad layout.
Véase también layout(), QGraphicsLinearLayout::addItem(), y QGraphicsLayout::invalidate().
void QGraphicsWidget::setShortcutAutoRepeat(int id, bool enabled = true)
Si enabled es verdadero, se activa la repetición automática del acceso directo con el id dado; en caso contrario, se desactiva.
Véase también grabShortcut(), releaseShortcut() y QWidget::setShortcutAutoRepeat().
void QGraphicsWidget::setShortcutEnabled(int id, bool enabled = true)
Si enabled es verdadero, se activa el acceso directo con el id dado; en caso contrario, el acceso directo se desactiva.
Advertencia: Normalmente no debería necesitar usar esta función ya que el sistema de atajos de Qt habilita/deshabilita los atajos automáticamente a medida que los widgets se ocultan/visibilizan y ganan o pierden foco. Es mejor usar QAction o QShortcut para manejar los atajos, ya que son más fáciles de usar que esta función de bajo nivel.
Véase también grabShortcut(), releaseShortcut(), y QWidget::setShortcutEnabled().
void QGraphicsWidget::setStyle(QStyle *style)
Establece el estilo del widget en style. QGraphicsWidget no se apropia de style.
Si no se asigna ningún estilo, o style es nullptr, el widget utilizará QGraphicsScene::style() (si se ha establecido). En caso contrario, el widget utilizará QApplication::style().
Esta función establece el atributo Qt::WA_SetStyle si style no es nullptr; en caso contrario borra el atributo.
Véase también style().
[static] void QGraphicsWidget::setTabOrder(QGraphicsWidget *first, QGraphicsWidget *second)
Mueve el widget second alrededor del anillo de widgets de foco para que el foco del teclado se mueva del widget first al widget second cuando se pulse la tecla Tab.
Ten en cuenta que como se cambia el orden de tabulación del widget second, deberías ordenar una cadena así:
setTabOrder(a, b); // a to b setTabOrder(b, c); // a to b to c setTabOrder(c, d); // a to b to c to d
no así:
// WRONG setTabOrder(c, d); // c to d setTabOrder(a, b); // a to b AND c to d setTabOrder(b, c); // a to b to c, but not c to d
Si first es nullptr, esto indica que second debe ser el primer widget en recibir el foco de entrada en caso de que la escena obtenga el foco Tab (es decir, el usuario pulsa Tab para que el foco pase a la escena). Si second es nullptr, esto indica que first debería ser el primer widget en recibir el foco si la escena obtuviera el foco BackTab.
Por defecto, el orden de tabulación se define implícitamente utilizando el orden de creación del widget.
Ver también focusPolicy y Enfoque de Teclado en Widgets.
void QGraphicsWidget::setWindowFrameMargins(QMarginsF margins)
Establece los márgenes del marco de la ventana del widget en margins. Los márgenes del marco por defecto son proporcionados por el estilo, y dependen de las banderas de la ventana actual.
Si quieres dibujar tu propia decoración de ventana, puedes establecer tus propios márgenes de marco para anular los márgenes por defecto.
Véase también unsetWindowFrameMargins(), getWindowFrameMargins(), y windowFrameRect().
void QGraphicsWidget::setWindowFrameMargins(qreal left, qreal top, qreal right, qreal bottom)
Establece los márgenes del marco de la ventana del widget en left, top, right y bottom.
Se trata de una función sobrecargada.
[override virtual] QPainterPath QGraphicsWidget::shape() const
Reimplementa: QGraphicsItem::shape() const.
[virtual protected] void QGraphicsWidget::showEvent(QShowEvent *event)
Este manejador de eventos, para eventos Show, es entregado antes de que el widget haya sido mostrado, por ejemplo, setVisible(true) ha sido llamado para el widget o uno de sus ancestros cuando el widget estaba previamente oculto.
Puedes reimplementar este manejador de eventos para detectar cuándo se muestra tu widget. Llamar a QEvent::accept() o QEvent::ignore() en event no tiene ningún efecto.
Ver también hideEvent(), QWidget::showEvent(), y ItemVisibleChange.
[override virtual protected] QSizeF QGraphicsWidget::sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const
Reimplementa: QGraphicsLayoutItem::sizeHint(Qt::SizeHint which, const QSizeF &constraint) const.
QStyle *QGraphicsWidget::style() const
Devuelve un puntero al estilo del widget. Si este widget no tiene ningún estilo explícitamente asignado, se devuelve en su lugar el estilo de la escena. A su vez, si la escena no tiene ningún estilo asignado, esta función devuelve QApplication::style().
Véase también setStyle().
bool QGraphicsWidget::testAttribute(Qt::WidgetAttribute attribute) const
Devuelve true si attribute está habilitado para este widget; en caso contrario, devuelve false.
Véase también setAttribute().
[override virtual] int QGraphicsWidget::type() const
Reimplementa: QGraphicsItem::type() const.
[virtual protected] void QGraphicsWidget::ungrabKeyboardEvent(QEvent *event)
Este manejador de eventos, para event, puede ser reimplementado en una subclase para recibir notificaciones de eventos QEvent::UngrabKeyboard.
Véase también ungrabKeyboard() y ungrabMouse().
[virtual protected] void QGraphicsWidget::ungrabMouseEvent(QEvent *event)
Este manejador de eventos, para event, puede ser reimplementado en una subclase para recibir notificaciones de eventos QEvent::UngrabMouse.
Véase también ungrabMouse() y ungrabKeyboard().
void QGraphicsWidget::unsetWindowFrameMargins()
Restablece los márgenes del marco de la ventana al valor por defecto, proporcionado por el estilo.
Véase también setWindowFrameMargins(), getWindowFrameMargins() y windowFrameRect().
[override virtual protected] void QGraphicsWidget::updateGeometry()
Reimplementa: QGraphicsLayoutItem::updateGeometry().
Si este widget está actualmente gestionado por un diseño, esta función notifica al diseño que las sugerencias de tamaño del widget han cambiado y que el diseño puede necesitar redimensionar y reposicionar el widget en consecuencia.
Llama a esta función si la dirección sizeHint() del widget ha cambiado.
Véase también QGraphicsLayout::invalidate().
[virtual protected] bool QGraphicsWidget::windowFrameEvent(QEvent *event)
Este manejador de eventos, para event, recibe eventos para el marco de la ventana si este widget es una ventana. Su implementación base proporciona soporte para la interacción por defecto con el marco de la ventana, como mover, redimensionar, etc.
Puedes reimplementar este manejador en una subclase de QGraphicsWidget para proporcionar tu propio soporte de interacción con el marco de la ventana.
Devuelve true si event ha sido reconocido y procesado; en caso contrario, devuelve false.
Véase también event().
QRectF QGraphicsWidget::windowFrameGeometry() const
Devuelve la geometría del widget en coordenadas padre incluyendo cualquier marco de ventana.
Véase también windowFrameRect(), getWindowFrameMargins() y setWindowFrameMargins().
QRectF QGraphicsWidget::windowFrameRect() const
Devuelve el rectángulo local del widget incluyendo cualquier marco de ventana.
Véase también windowFrameGeometry(), getWindowFrameMargins() y setWindowFrameMargins().
[virtual protected] Qt::WindowFrameSection QGraphicsWidget::windowFrameSectionAt(const QPointF &pos) const
Devuelve la sección de marco de ventana en la posición pos, o Qt::NoSection si no hay sección de marco de ventana en esta posición.
Esta función se utiliza en la implementación base de QGraphicsWidget para la interacción con el marco de la ventana.
Puede volver a implementar esta función si desea personalizar la forma en que se puede mover o cambiar el tamaño de una ventana de forma interactiva. Por ejemplo, si sólo desea permitir que una ventana cambie de tamaño por la esquina inferior derecha, puede reimplementar esta función para que devuelva Qt::NoSection para todas las secciones excepto Qt::BottomRightSection.
Véase también windowFrameEvent(), paintWindowFrame() y windowFrameGeometry().
Qt::WindowType QGraphicsWidget::windowType() const
Devuelve el tipo de ventana de los widgets.
Véase también windowFlags(), isWindow() y isPanel().
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.