Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
QRhiWidget Class Reference

\inmodule QtWidgets More...

#include <qrhiwidget.h>

+ Inheritance diagram for QRhiWidget:
+ Collaboration diagram for QRhiWidget:

Public Types

enum class  Api {
  Null , OpenGL , Metal , Vulkan ,
  Direct3D11 , Direct3D12
}
 Specifies the 3D API and QRhi backend to use. More...
 
enum class  TextureFormat { RGBA8 , RGBA16F , RGBA32F , RGB10A2 }
 Specifies the format of the texture to which the QRhiWidget renders. More...
 
- Public Types inherited from QWidget
enum  RenderFlag { DrawWindowBackground = 0x1 , DrawChildren = 0x2 , IgnoreMask = 0x4 }
 This enum describes how to render the widget when calling QWidget::render(). More...
 
- Public Types inherited from QPaintDevice
enum  PaintDeviceMetric {
  PdmWidth = 1 , PdmHeight , PdmWidthMM , PdmHeightMM ,
  PdmNumColors , PdmDepth , PdmDpiX , PdmDpiY ,
  PdmPhysicalDpiX , PdmPhysicalDpiY , PdmDevicePixelRatio , PdmDevicePixelRatioScaled
}
 

Signals

void frameSubmitted ()
 This signal is emitted after the widget's top-level window has finished composition and has \l{QRhi::endFrame()}{submitted a frame}.
 
void renderFailed ()
 This signal is emitted whenever the widget is supposed to render to its backing texture (either due to a \l{QWidget::update()}{widget update} or due to a call to grabFramebuffer()), but there is no \l QRhi for the widget to use, likely due to issues related to graphics configuration.
 
void sampleCountChanged (int samples)
 
void colorBufferFormatChanged (TextureFormat format)
 
void fixedColorBufferSizeChanged (const QSize &pixelSize)
 
void mirrorVerticallyChanged (bool enabled)
 
- Signals inherited from QWidget
void windowTitleChanged (const QString &title)
 This signal is emitted when the window's title has changed, with the new title as an argument.
 
void windowIconChanged (const QIcon &icon)
 This signal is emitted when the window's icon has changed, with the new icon as an argument.
 
void windowIconTextChanged (const QString &iconText)
 This signal is emitted when the window's icon text has changed, with the new iconText as an argument.
 
void customContextMenuRequested (const QPoint &pos)
 This signal is emitted when the widget's \l contextMenuPolicy is Qt::CustomContextMenu, and the user has requested a context menu on the widget.
 
- Signals inherited from QObject
void destroyed (QObject *=nullptr)
 This signal is emitted immediately before the object obj is destroyed, after any instances of QPointer have been notified, and cannot be blocked.
 
void objectNameChanged (const QString &objectName, QPrivateSignal)
 This signal is emitted after the object's name has been changed.
 

Public Member Functions

 QRhiWidget (QWidget *parent=nullptr, Qt::WindowFlags f={})
 Constructs a widget which is a child of parent, with widget flags set to f.
 
 ~QRhiWidget () override
 Destructor.
 
Api api () const
 
void setApi (Api api)
 Sets the graphics API and QRhi backend to use to api.
 
bool isDebugLayerEnabled () const
 
void setDebugLayerEnabled (bool enable)
 Requests the debug or validation layer of the underlying graphics API when enable is true.
 
int sampleCount () const
 
void setSampleCount (int samples)
 
TextureFormat colorBufferFormat () const
 
void setColorBufferFormat (TextureFormat format)
 
QSize fixedColorBufferSize () const
 
void setFixedColorBufferSize (QSize pixelSize)
 
void setFixedColorBufferSize (int w, int h)
 
bool isMirrorVerticallyEnabled () const
 
void setMirrorVertically (bool enabled)
 
QImage grabFramebuffer () const
 Renders a new frame, reads the contents of the texture back, and returns it as a QImage.
 
- Public Member Functions inherited from QWidget
 QWidget (QWidget *parent=nullptr, Qt::WindowFlags f=Qt::WindowFlags())
 Constructs a widget which is a child of parent, with widget flags set to f.
 
 ~QWidget ()
 Destroys the widget.
 
int devType () const override
 
WId winId () const
 Returns the window system identifier of the widget.
 
void createWinId ()
 
WId internalWinId () const
 
WId effectiveWinId () const
 
QStylestyle () const
 
void setStyle (QStyle *)
 Sets the widget's GUI style to style.
 
bool isWindow () const
 Returns true if the widget is an independent window, otherwise returns false.
 
bool isModal () const
 
Qt::WindowModality windowModality () const
 
void setWindowModality (Qt::WindowModality windowModality)
 
bool isEnabled () const
 
bool isEnabledTo (const QWidget *) const
 Returns true if this widget would become enabled if ancestor is enabled; otherwise returns false.
 
QRect frameGeometry () const
 
const QRectgeometry () const
 
QRect normalGeometry () const
 
int x () const
 
int y () const
 
QPoint pos () const
 
QSize frameSize () const
 
QSize size () const
 
int width () const
 
int height () const
 
QRect rect () const
 
QRect childrenRect () const
 
QRegion childrenRegion () const
 
QSize minimumSize () const
 
QSize maximumSize () const
 
int minimumWidth () const
 
int minimumHeight () const
 
int maximumWidth () const
 
int maximumHeight () const
 
void setMinimumSize (const QSize &)
 
void setMinimumSize (int minw, int minh)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.This function corresponds to setMinimumSize(QSize(minw, minh)).
 
void setMaximumSize (const QSize &)
 
void setMaximumSize (int maxw, int maxh)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.This function corresponds to setMaximumSize(QSize(maxw, maxh)).
 
void setMinimumWidth (int minw)
 
void setMinimumHeight (int minh)
 
void setMaximumWidth (int maxw)
 
void setMaximumHeight (int maxh)
 
QSize sizeIncrement () const
 
void setSizeIncrement (const QSize &)
 
void setSizeIncrement (int w, int h)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.Sets the x (width) size increment to w and the y (height) size increment to h.
 
QSize baseSize () const
 
void setBaseSize (const QSize &)
 
void setBaseSize (int basew, int baseh)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.This corresponds to setBaseSize(QSize(basew, baseh)).
 
void setFixedSize (const QSize &)
 Sets both the minimum and maximum sizes of the widget to s, thereby preventing it from ever growing or shrinking.
 
void setFixedSize (int w, int h)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.Sets the width of the widget to w and the height to h.
 
void setFixedWidth (int w)
 Sets both the minimum and maximum width of the widget to w without changing the heights.
 
void setFixedHeight (int h)
 Sets both the minimum and maximum heights of the widget to h without changing the widths.
 
QPointF mapToGlobal (const QPointF &) const
 Translates the widget coordinate pos to global screen coordinates.
 
QPoint mapToGlobal (const QPoint &) const
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
QPointF mapFromGlobal (const QPointF &) const
 Translates the global screen coordinate pos to widget coordinates.
 
QPoint mapFromGlobal (const QPoint &) const
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
QPointF mapToParent (const QPointF &) const
 Translates the widget coordinate pos to a coordinate in the parent widget.
 
QPoint mapToParent (const QPoint &) const
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
QPointF mapFromParent (const QPointF &) const
 Translates the parent widget coordinate pos to widget coordinates.
 
QPoint mapFromParent (const QPoint &) const
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
QPointF mapTo (const QWidget *, const QPointF &) const
 Translates the widget coordinate pos to the coordinate system of parent.
 
QPoint mapTo (const QWidget *, const QPoint &) const
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
QPointF mapFrom (const QWidget *, const QPointF &) const
 Translates the widget coordinate pos from the coordinate system of parent to this widget's coordinate system.
 
QPoint mapFrom (const QWidget *, const QPoint &) const
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
QWidgetwindow () const
 Returns the window for this widget, i.e.
 
QWidgetnativeParentWidget () const
 
QWidgettopLevelWidget () const
 
const QPalettepalette () const
 
void setPalette (const QPalette &)
 
void setBackgroundRole (QPalette::ColorRole)
 Sets the background role of the widget to role.
 
QPalette::ColorRole backgroundRole () const
 Returns the background role of the widget.
 
void setForegroundRole (QPalette::ColorRole)
 Sets the foreground role of the widget to role.
 
QPalette::ColorRole foregroundRole () const
 Returns the foreground role.
 
const QFontfont () const
 
void setFont (const QFont &)
 
QFontMetrics fontMetrics () const
 Returns the font metrics for the widget's current font.
 
QFontInfo fontInfo () const
 Returns the font info for the widget's current font.
 
QCursor cursor () const
 
void setCursor (const QCursor &)
 
void unsetCursor ()
 
void setMouseTracking (bool enable)
 
bool hasMouseTracking () const
 
bool underMouse () const
 Returns true if the widget is under the mouse cursor; otherwise returns false.
 
void setTabletTracking (bool enable)
 
bool hasTabletTracking () const
 
void setMask (const QBitmap &)
 Causes only the pixels of the widget for which bitmap has a corresponding 1 bit to be visible.
 
void setMask (const QRegion &)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.Causes only the parts of the widget which overlap region to be visible.
 
QRegion mask () const
 Returns the mask currently set on a widget.
 
void clearMask ()
 Removes any mask set by setMask().
 
void render (QPaintDevice *target, const QPoint &targetOffset=QPoint(), const QRegion &sourceRegion=QRegion(), RenderFlags renderFlags=RenderFlags(DrawWindowBackground|DrawChildren))
 
void render (QPainter *painter, const QPoint &targetOffset=QPoint(), const QRegion &sourceRegion=QRegion(), RenderFlags renderFlags=RenderFlags(DrawWindowBackground|DrawChildren))
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.Renders the widget into the painter's QPainter::device().
 
Q_INVOKABLE QPixmap grab (const QRect &rectangle=QRect(QPoint(0, 0), QSize(-1, -1)))
 
void grabGesture (Qt::GestureType type, Qt::GestureFlags flags=Qt::GestureFlags())
 Subscribes the widget to a given gesture with specific flags.
 
void ungrabGesture (Qt::GestureType type)
 Unsubscribes the widget from a given gesture type.
 
QString styleSheet () const
 
QString windowTitle () const
 
void setWindowIcon (const QIcon &icon)
 
QIcon windowIcon () const
 
void setWindowIconText (const QString &)
 
QString windowIconText () const
 
void setWindowRole (const QString &)
 Sets the window's role to role.
 
QString windowRole () const
 Returns the window's role, or an empty string.
 
void setWindowFilePath (const QString &filePath)
 
QString windowFilePath () const
 
void setWindowOpacity (qreal level)
 
qreal windowOpacity () const
 
bool isWindowModified () const
 
void setLayoutDirection (Qt::LayoutDirection direction)
 
Qt::LayoutDirection layoutDirection () const
 
void unsetLayoutDirection ()
 
void setLocale (const QLocale &locale)
 
QLocale locale () const
 
void unsetLocale ()
 
bool isRightToLeft () const
 
bool isLeftToRight () const
 
bool isActiveWindow () const
 
void activateWindow ()
 Sets the top-level widget containing this widget to be the active window.
 
void clearFocus ()
 Takes keyboard input focus from the widget.
 
void setFocus (Qt::FocusReason reason)
 Gives the keyboard input focus to this widget (or its focus proxy) if this widget or one of its parents is the \l{isActiveWindow()}{active window}.
 
Qt::FocusPolicy focusPolicy () const
 
void setFocusPolicy (Qt::FocusPolicy policy)
 
bool hasFocus () const
 
void setFocusProxy (QWidget *)
 Sets the widget's focus proxy to widget w.
 
QWidgetfocusProxy () const
 Returns the focus proxy, or \nullptr if there is no focus proxy.
 
Qt::ContextMenuPolicy contextMenuPolicy () const
 
void setContextMenuPolicy (Qt::ContextMenuPolicy policy)
 
void grabMouse ()
 Grabs the mouse input.
 
void grabMouse (const QCursor &)
 
void releaseMouse ()
 Releases the mouse grab.
 
void grabKeyboard ()
 Grabs the keyboard input.
 
void releaseKeyboard ()
 Releases the keyboard grab.
 
int grabShortcut (const QKeySequence &key, Qt::ShortcutContext context=Qt::WindowShortcut)
 Adds a shortcut to Qt's shortcut system that watches for the given key sequence in the given context.
 
void releaseShortcut (int id)
 Removes the shortcut with the given id from Qt's shortcut system.
 
void setShortcutEnabled (int id, bool enable=true)
 If enable is true, the shortcut with the given id is enabled; otherwise the shortcut is disabled.
 
void setShortcutAutoRepeat (int id, bool enable=true)
 
bool updatesEnabled () const
 
void setUpdatesEnabled (bool enable)
 
void update (int x, int y, int w, int h)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.This version updates a rectangle (x, y, w, h) inside the widget.
 
void update (const QRect &)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.This version updates a rectangle rect inside the widget.
 
void update (const QRegion &)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.This version repaints a region rgn inside the widget.
 
void repaint (int x, int y, int w, int h)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.This version repaints a rectangle (x, y, w, h) inside the widget.
 
void repaint (const QRect &)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.This version repaints a rectangle rect inside the widget.
 
void repaint (const QRegion &)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.This version repaints a region rgn inside the widget.
 
void stackUnder (QWidget *)
 Places the widget under w in the parent widget's stack.
 
void move (int x, int y)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.This corresponds to move(QPoint(x, y)).
 
void move (const QPoint &)
 
void resize (int w, int h)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.This corresponds to resize(QSize(w, h)).
 
void resize (const QSize &)
 
void setGeometry (int x, int y, int w, int h)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.This corresponds to setGeometry(QRect(x, y, w, h)).
 
void setGeometry (const QRect &)
 
QByteArray saveGeometry () const
 
bool restoreGeometry (const QByteArray &geometry)
 
void adjustSize ()
 Adjusts the size of the widget to fit its contents.
 
bool isVisible () const
 
bool isVisibleTo (const QWidget *) const
 Returns true if this widget would become visible if ancestor is shown; otherwise returns false.
 
bool isHidden () const
 Returns true if the widget is hidden, otherwise returns false.
 
bool isMinimized () const
 
bool isMaximized () const
 
bool isFullScreen () const
 
Qt::WindowStates windowState () const
 Returns the current window state.
 
void setWindowState (Qt::WindowStates state)
 Sets the window state to windowState.
 
void overrideWindowState (Qt::WindowStates state)
 
virtual QSize sizeHint () const
 
virtual QSize minimumSizeHint () const
 
QSizePolicy sizePolicy () const
 
void setSizePolicy (QSizePolicy)
 
void setSizePolicy (QSizePolicy::Policy horizontal, QSizePolicy::Policy vertical)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.Sets the size policy of the widget to horizontal and vertical, with standard stretch and no height-for-width.
 
virtual int heightForWidth (int) const
 Returns the preferred height for this widget, given the width w.
 
virtual bool hasHeightForWidth () const
 
QRegion visibleRegion () const
 Returns the unobscured region where paint events can occur.
 
void setContentsMargins (int left, int top, int right, int bottom)
 Sets the margins around the contents of the widget to have the sizes left, top, right, and bottom.
 
void setContentsMargins (const QMargins &margins)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
QMargins contentsMargins () const
 The contentsMargins function returns the widget's contents margins.
 
QRect contentsRect () const
 Returns the area inside the widget's margins.
 
QLayoutlayout () const
 Returns the layout manager that is installed on this widget, or \nullptr if no layout manager is installed.
 
void setLayout (QLayout *)
 Sets the layout manager for this widget to layout.
 
void updateGeometry ()
 Notifies the layout system that this widget has changed and may need to change geometry.
 
void setParent (QWidget *parent)
 Sets the parent of the widget to parent, and resets the window flags.
 
void setParent (QWidget *parent, Qt::WindowFlags f)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.This function also takes widget flags, f as an argument.
 
void scroll (int dx, int dy)
 Scrolls the widget including its children dx pixels to the right and dy downward.
 
void scroll (int dx, int dy, const QRect &)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.This version only scrolls r and does not move the children of the widget.
 
QWidgetfocusWidget () const
 Returns the last child of this widget that setFocus had been called on.
 
QWidgetnextInFocusChain () const
 Returns the next widget in this widget's focus chain.
 
QWidgetpreviousInFocusChain () const
 The previousInFocusChain function returns the previous widget in this widget's focus chain.
 
bool acceptDrops () const
 
void setAcceptDrops (bool on)
 
void addAction (QAction *action)
 Appends the action action to this widget's list of actions.
 
void addActions (const QList< QAction * > &actions)
 Appends the actions actions to this widget's list of actions.
 
void insertActions (QAction *before, const QList< QAction * > &actions)
 Inserts the actions actions to this widget's list of actions, before the action before.
 
void insertAction (QAction *before, QAction *action)
 Inserts the action action to this widget's list of actions, before the action before.
 
void removeAction (QAction *action)
 Removes the action action from this widget's list of actions.
 
QList< QAction * > actions () const
 Returns the (possibly empty) list of this widget's actions.
 
QActionaddAction (const QString &text)
 
QActionaddAction (const QIcon &icon, const QString &text)
 
QActionaddAction (const QString &text, const QObject *receiver, const char *member, Qt::ConnectionType type=Qt::AutoConnection)
 
QActionaddAction (const QIcon &icon, const QString &text, const QObject *receiver, const char *member, Qt::ConnectionType type=Qt::AutoConnection)
 
template<typename... Args, typename = compatible_action_slot_args<Args...>>
QActionaddAction (const QString &text, Args &&...args)
 
template<typename... Args, typename = compatible_action_slot_args<Args...>>
QActionaddAction (const QIcon &icon, const QString &text, Args &&...args)
 
QWidgetparentWidget () const
 Returns the parent of this widget, or \nullptr if it does not have any parent widget.
 
void setWindowFlags (Qt::WindowFlags type)
 
Qt::WindowFlags windowFlags () const
 Window flags are a combination of a type (e.g.
 
void setWindowFlag (Qt::WindowType, bool on=true)
 
void overrideWindowFlags (Qt::WindowFlags type)
 Sets the window flags for the widget to flags, without telling the window system.
 
Qt::WindowType windowType () const
 Returns the window type of this widget.
 
QWidgetchildAt (int x, int y) const
 Returns the visible child widget at the position ({x}, {y}) in the widget's coordinate system.
 
QWidgetchildAt (const QPoint &p) const
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.Returns the visible child widget at point p in the widget's own coordinate system.
 
void setAttribute (Qt::WidgetAttribute, bool on=true)
 Sets the attribute attribute on this widget if on is true; otherwise clears the attribute.
 
bool testAttribute (Qt::WidgetAttribute) const
 Returns true if attribute attribute is set on this widget; otherwise returns false.
 
QPaintEnginepaintEngine () const override
 Returns the widget's paint engine.
 
void ensurePolished () const
 Ensures that the widget and its children have been polished by QStyle (i.e., have a proper font and palette).
 
bool isAncestorOf (const QWidget *child) const
 Returns true if this widget is a parent, (or grandparent and so on to any level), of the given child, and both widgets are within the same window; otherwise returns false.
 
bool autoFillBackground () const
 
void setAutoFillBackground (bool enabled)
 
QBackingStorebackingStore () const
 
QWindowwindowHandle () const
 If this is a native widget, return the associated QWindow.
 
QScreenscreen () const
 Returns the screen the widget is on.
 
void setScreen (QScreen *)
 Sets the screen on which the widget should be shown to screen.
 
virtual QVariant inputMethodQuery (Qt::InputMethodQuery) const
 This method is only relevant for input widgets.
 
Qt::InputMethodHints inputMethodHints () const
 
void setInputMethodHints (Qt::InputMethodHints hints)
 
- Public Member Functions inherited from QObject
Q_INVOKABLE QObject (QObject *parent=nullptr)
 Constructs an object with parent object parent.
 
virtual ~QObject ()
 Destroys the object, deleting all its child objects.
 
virtual bool eventFilter (QObject *watched, QEvent *event)
 Filters events if this object has been installed as an event filter for the watched object.
 
QString objectName () const
 
Q_WEAK_OVERLOAD void setObjectName (const QString &name)
 Sets the object's name to name.
 
void setObjectName (QAnyStringView name)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
QBindable< QStringbindableObjectName ()
 
bool isWidgetType () const
 Returns true if the object is a widget; otherwise returns false.
 
bool isWindowType () const
 Returns true if the object is a window; otherwise returns false.
 
bool isQuickItemType () const
 Returns true if the object is a QQuickItem; otherwise returns false.
 
bool signalsBlocked () const noexcept
 Returns true if signals are blocked; otherwise returns false.
 
bool blockSignals (bool b) noexcept
 If block is true, signals emitted by this object are blocked (i.e., emitting a signal will not invoke anything connected to it).
 
QThreadthread () const
 Returns the thread in which the object lives.
 
bool moveToThread (QThread *thread QT6_DECL_NEW_OVERLOAD_TAIL)
 Changes the thread affinity for this object and its children and returns true on success.
 
int startTimer (int interval, Qt::TimerType timerType=Qt::CoarseTimer)
 This is an overloaded function that will start a timer of type timerType and a timeout of interval milliseconds.
 
int startTimer (std::chrono::nanoseconds time, Qt::TimerType timerType=Qt::CoarseTimer)
 
void killTimer (int id)
 Kills the timer with timer identifier, id.
 
void killTimer (Qt::TimerId id)
 
template<typename T >
findChild (QAnyStringView aName, Qt::FindChildOptions options=Qt::FindChildrenRecursively) const
 Returns the child of this object that can be cast into type T and that is called name, or \nullptr if there is no such object.
 
template<typename T >
QList< T > findChildren (QAnyStringView aName, Qt::FindChildOptions options=Qt::FindChildrenRecursively) const
 Returns all children of this object with the given name that can be cast to type T, or an empty list if there are no such objects.
 
template<typename T >
findChild (Qt::FindChildOptions options=Qt::FindChildrenRecursively) const
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
template<typename T >
QList< T > findChildren (Qt::FindChildOptions options=Qt::FindChildrenRecursively) const
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
const QObjectListchildren () const
 Returns a list of child objects.
 
void setParent (QObject *parent)
 Makes the object a child of parent.
 
void installEventFilter (QObject *filterObj)
 Installs an event filter filterObj on this object.
 
void removeEventFilter (QObject *obj)
 Removes an event filter object obj from this object.
 
QMetaObject::Connection connect (const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoConnection) const
 
bool disconnect (const char *signal=nullptr, const QObject *receiver=nullptr, const char *member=nullptr) const
 
bool disconnect (const QObject *receiver, const char *member=nullptr) const
 
void dumpObjectTree () const
 Dumps a tree of children to the debug output.
 
void dumpObjectInfo () const
 Dumps information about signal connections, etc.
 
bool setProperty (const char *name, const QVariant &value)
 Sets the value of the object's name property to value.
 
bool setProperty (const char *name, QVariant &&value)
 
QVariant property (const char *name) const
 Returns the value of the object's name property.
 
QList< QByteArraydynamicPropertyNames () const
 
QBindingStoragebindingStorage ()
 
const QBindingStoragebindingStorage () const
 
QObjectparent () const
 Returns a pointer to the parent object.
 
bool inherits (const char *classname) const
 Returns true if this object is an instance of a class that inherits className or a QObject subclass that inherits className; otherwise returns false.
 
- Public Member Functions inherited from QPaintDevice
virtual ~QPaintDevice ()
 
bool paintingActive () const
 
int width () const
 
int height () const
 
int widthMM () const
 
int heightMM () const
 
int logicalDpiX () const
 
int logicalDpiY () const
 
int physicalDpiX () const
 
int physicalDpiY () const
 
qreal devicePixelRatio () const
 
qreal devicePixelRatioF () const
 
int colorCount () const
 
int depth () const
 

Protected Member Functions

bool isAutoRenderTargetEnabled () const
 
void setAutoRenderTarget (bool enabled)
 Controls if a depth-stencil QRhiRenderBuffer and a QRhiTextureRenderTarget is created and maintained automatically by the widget.
 
virtual void initialize (QRhiCommandBuffer *cb)
 Called when the widget is initialized for the first time, when the associated texture's size, format, or sample count changes, or when the QRhi and texture change for any reason.
 
virtual void render (QRhiCommandBuffer *cb)
 Called when the widget contents (i.e.
 
virtual void releaseResources ()
 Called when the need to early-release the graphics resources arises.
 
QRhirhi () const
 
QRhiTexturecolorTexture () const
 
QRhiRenderBuffermsaaColorBuffer () const
 
QRhiTextureresolveTexture () const
 
QRhiRenderBufferdepthStencilBuffer () const
 
QRhiRenderTargetrenderTarget () const
 
void resizeEvent (QResizeEvent *e) override
 Handles resize events that are passed in the e event parameter.
 
void paintEvent (QPaintEvent *e) override
 Handles paint events.
 
bool event (QEvent *e) override
 \reimp
 
- Protected Member Functions inherited from QWidget
bool event (QEvent *event) override
 This is the main event handler; it handles event event.
 
virtual void mousePressEvent (QMouseEvent *event)
 This event handler, for event event, can be reimplemented in a subclass to receive mouse press events for the widget.
 
virtual void mouseReleaseEvent (QMouseEvent *event)
 This event handler, for event event, can be reimplemented in a subclass to receive mouse release events for the widget.
 
virtual void mouseDoubleClickEvent (QMouseEvent *event)
 This event handler, for event event, can be reimplemented in a subclass to receive mouse double click events for the widget.
 
virtual void mouseMoveEvent (QMouseEvent *event)
 This event handler, for event event, can be reimplemented in a subclass to receive mouse move events for the widget.
 
virtual void keyPressEvent (QKeyEvent *event)
 This event handler, for event event, can be reimplemented in a subclass to receive key press events for the widget.
 
virtual void keyReleaseEvent (QKeyEvent *event)
 This event handler, for event event, can be reimplemented in a subclass to receive key release events for the widget.
 
virtual void focusInEvent (QFocusEvent *event)
 This event handler can be reimplemented in a subclass to receive keyboard focus events (focus received) for the widget.
 
virtual void focusOutEvent (QFocusEvent *event)
 This event handler can be reimplemented in a subclass to receive keyboard focus events (focus lost) for the widget.
 
virtual void enterEvent (QEnterEvent *event)
 This event handler can be reimplemented in a subclass to receive widget enter events which are passed in the event parameter.
 
virtual void leaveEvent (QEvent *event)
 This event handler can be reimplemented in a subclass to receive widget leave events which are passed in the event parameter.
 
virtual void moveEvent (QMoveEvent *event)
 This event handler can be reimplemented in a subclass to receive widget move events which are passed in the event parameter.
 
virtual void closeEvent (QCloseEvent *event)
 This event handler is called with the given event when Qt receives a window close request for a top-level widget from the window system.
 
virtual void contextMenuEvent (QContextMenuEvent *event)
 This event handler, for event event, can be reimplemented in a subclass to receive widget context menu events.
 
virtual void actionEvent (QActionEvent *event)
 This event handler is called with the given event whenever the widget's actions are changed.
 
virtual void showEvent (QShowEvent *event)
 This event handler can be reimplemented in a subclass to receive widget show events which are passed in the event parameter.
 
virtual void hideEvent (QHideEvent *event)
 This event handler can be reimplemented in a subclass to receive widget hide events.
 
virtual bool nativeEvent (const QByteArray &eventType, void *message, qintptr *result)
 This special event handler can be reimplemented in a subclass to receive native platform events identified by eventType which are passed in the message parameter.
 
virtual void changeEvent (QEvent *)
 This event handler can be reimplemented to handle state changes.
 
int metric (PaintDeviceMetric) const override
 Internal implementation of the virtual QPaintDevice::metric() function.
 
void initPainter (QPainter *painter) const override
 Initializes the painter pen, background and font to the same as the given widget's.
 
QPaintDeviceredirected (QPoint *offset) const override
 
QPaintersharedPainter () const override
 
virtual void inputMethodEvent (QInputMethodEvent *)
 This event handler, for event event, can be reimplemented in a subclass to receive Input Method composition events.
 
void create (WId=0, bool initializeWindow=true, bool destroyOldWindow=true)
 Creates a new widget window.
 
void destroy (bool destroyWindow=true, bool destroySubWindows=true)
 Frees up window system resources.
 
virtual bool focusNextPrevChild (bool next)
 Finds a new widget to give the keyboard focus to, as appropriate for Tab and Shift+Tab, and returns true if it can find a new widget, or false if it can't.
 
bool focusNextChild ()
 Finds a new widget to give the keyboard focus to, as appropriate for \uicontrol Tab, and returns true if it can find a new widget, or false if it can't.
 
bool focusPreviousChild ()
 Finds a new widget to give the keyboard focus to, as appropriate for \uicontrol Shift+Tab, and returns true if it can find a new widget, or false if it can't.
 
 QWidget (QWidgetPrivate &d, QWidget *parent, Qt::WindowFlags f)
 
- Protected Member Functions inherited from QObject
QObjectsender () const
 Returns a pointer to the object that sent the signal, if called in a slot activated by a signal; otherwise it returns \nullptr.
 
int senderSignalIndex () const
 
int receivers (const char *signal) const
 Returns the number of receivers connected to the signal.
 
bool isSignalConnected (const QMetaMethod &signal) const
 
virtual void timerEvent (QTimerEvent *event)
 This event handler can be reimplemented in a subclass to receive timer events for the object.
 
virtual void childEvent (QChildEvent *event)
 This event handler can be reimplemented in a subclass to receive child events.
 
virtual void customEvent (QEvent *event)
 This event handler can be reimplemented in a subclass to receive custom events.
 
virtual void connectNotify (const QMetaMethod &signal)
 
virtual void disconnectNotify (const QMetaMethod &signal)
 
 QObject (QObjectPrivate &dd, QObject *parent=nullptr)
 
- Protected Member Functions inherited from QPaintDevice
 QPaintDevice () noexcept
 

Properties

int sampleCount
 This property controls for sample count for multisample antialiasing.
 
TextureFormat colorBufferFormat
 This property controls the texture format of the texture (or renderbuffer) used as the color buffer.
 
QSize fixedColorBufferSize
 The fixed size, in pixels, of the QRhiWidget's associated texture.
 
bool mirrorVertically
 When enabled, flips the image around the X axis when compositing the QRhiWidget's backing texture with the rest of the widget content in the top-level window.
 
- Properties inherited from QWidget
bool modal
 whether the widget is a modal widget
 
Qt::WindowModality windowModality
 which windows are blocked by the modal widget
 
bool enabled
 whether the widget is enabled
 
QRect geometry
 the geometry of the widget relative to its parent and excluding the window frame
 
QRect frameGeometry
 geometry of the widget relative to its parent including any window frame
 
QRect normalGeometry
 the geometry of the widget as it will appear when shown as a normal (not maximized or full screen) top-level widget
 
int x
 the x coordinate of the widget relative to its parent including any window frame
 
int y
 the y coordinate of the widget relative to its parent and including any window frame
 
QPoint pos
 the position of the widget within its parent widget
 
QSize frameSize
 the size of the widget including any window frame
 
QSize size
 the size of the widget excluding any window frame
 
int width
 the width of the widget excluding any window frame
 
int height
 the height of the widget excluding any window frame
 
QRect rect
 the internal geometry of the widget excluding any window frame
 
QRect childrenRect
 the bounding rectangle of the widget's children
 
QRegion childrenRegion
 the combined region occupied by the widget's children
 
QSizePolicy sizePolicy
 the default layout behavior of the widget
 
QSize minimumSize
 the widget's minimum size
 
QSize maximumSize
 the widget's maximum size in pixels
 
int minimumWidth
 the widget's minimum width in pixels
 
int minimumHeight
 the widget's minimum height in pixels
 
int maximumWidth
 the widget's maximum width in pixels
 
int maximumHeight
 the widget's maximum height in pixels
 
QSize sizeIncrement
 the size increment of the widget
 
QSize baseSize
 the base size of the widget
 
QPalette palette
 the widget's palette
 
QFont font
 the font currently set for the widget
 
QCursor cursor
 the cursor shape for this widget
 
bool mouseTracking
 whether mouse tracking is enabled for the widget
 
bool tabletTracking
 whether tablet tracking is enabled for the widget
 
bool isActiveWindow
 whether this widget's window is the active window
 
Qt::FocusPolicy focusPolicy
 the way the widget accepts keyboard focus
 
bool focus
 whether this widget (or its focus proxy) has the keyboard input focus
 
Qt::ContextMenuPolicy contextMenuPolicy
 how the widget shows a context menu
 
bool updatesEnabled
 whether updates are enabled
 
bool visible
 whether the widget is visible
 
bool minimized
 whether this widget is minimized (iconified)
 
bool maximized
 whether this widget is maximized
 
bool fullScreen
 whether the widget is shown in full screen mode
 
QSize sizeHint
 the recommended size for the widget
 
QSize minimumSizeHint
 the recommended minimum size for the widget
 
bool acceptDrops
 whether drop events are enabled for this widget
 
QString windowTitle
 the window title (caption)
 
QIcon windowIcon
 the widget's icon
 
QString windowIconText
 the text to be displayed on the icon of a minimized window
 
double windowOpacity
 The level of opacity for the window.
 
bool windowModified
 whether the document shown in the window has unsaved changes
 
Qt::LayoutDirection layoutDirection
 the layout direction for this widget.
 
bool autoFillBackground
 whether the widget background is filled automatically
 
QString styleSheet
 the widget's style sheet
 
QLocale locale
 the widget's locale
 
QString windowFilePath
 the file path associated with a widget
 
Qt::InputMethodHints inputMethodHints
 What input method specific hints the widget has.
 
- Properties inherited from QObject
QString objectName
 the name of this object
 

Additional Inherited Members

- Public Slots inherited from QWidget
void setEnabled (bool)
 
void setDisabled (bool)
 Disables widget input events if disable is true; otherwise enables input events.
 
void setWindowModified (bool)
 
void setWindowTitle (const QString &)
 
void setStyleSheet (const QString &styleSheet)
 
void setFocus ()
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.Gives the keyboard input focus to this widget (or its focus proxy) if this widget or one of its parents is the \l{isActiveWindow()}{active window}.
 
void update ()
 Updates the widget unless updates are disabled or the widget is hidden.
 
void repaint ()
 Repaints the widget directly by calling paintEvent() immediately, unless updates are disabled or the widget is hidden.
 
virtual void setVisible (bool visible)
 
void setHidden (bool hidden)
 Convenience function, equivalent to setVisible(!hidden).
 
void show ()
 Shows the widget and its child widgets.
 
void hide ()
 Hides the widget.
 
void showMinimized ()
 Shows the widget minimized, as an icon.
 
void showMaximized ()
 Shows the widget maximized.
 
void showFullScreen ()
 Shows the widget in full-screen mode.
 
void showNormal ()
 Restores the widget after it has been maximized or minimized.
 
bool close ()
 Closes this widget.
 
void raise ()
 Raises this widget to the top of the parent widget's stack.
 
void lower ()
 Lowers the widget to the bottom of the parent widget's stack.
 
- Public Slots inherited from QObject
void deleteLater ()
 \threadsafe
 
- Static Public Member Functions inherited from QWidget
static void setTabOrder (QWidget *, QWidget *)
 Puts the second widget after the first widget in the focus order.
 
static void setTabOrder (std::initializer_list< QWidget * > widgets)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
static QWidgetmouseGrabber ()
 Returns the widget that is currently grabbing the mouse input.
 
static QWidgetkeyboardGrabber ()
 Returns the widget that is currently grabbing the keyboard input.
 
static QWidgetfind (WId)
 Returns a pointer to the widget with window identifier/handle id.
 
static QWidgetcreateWindowContainer (QWindow *window, QWidget *parent=nullptr, Qt::WindowFlags flags=Qt::WindowFlags())
 Creates a QWidget that makes it possible to embed window into a QWidget-based application.
 
- Static Public Member Functions inherited from QObject
static QMetaObject::Connection connect (const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
 \threadsafe
 
static QMetaObject::Connection connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type=Qt::AutoConnection)
 
template<typename Func1 , typename Func2 >
static QMetaObject::Connection connect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const typename QtPrivate::ContextTypeForFunctor< Func2 >::ContextType *context, Func2 &&slot, Qt::ConnectionType type=Qt::AutoConnection)
 
template<typename Func1 , typename Func2 >
static QMetaObject::Connection connect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, Func2 &&slot)
 
static bool disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *member)
 \threadsafe
 
static bool disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &member)
 
static bool disconnect (const QMetaObject::Connection &)
 Disconnect a connection.
 
template<typename Func1 , typename Func2 >
static bool disconnect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const typename QtPrivate::FunctionPointer< Func2 >::Object *receiver, Func2 slot)
 
template<typename Func1 >
static bool disconnect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const QObject *receiver, void **zero)
 
- Static Public Member Functions inherited from QPaintDevice
static qreal devicePixelRatioFScale ()
 
- Protected Slots inherited from QWidget
void updateMicroFocus (Qt::InputMethodQuery query=Qt::ImQueryAll)
 Updates the widget's micro focus and informs input methods that the state specified by query has changed.
 
- Protected Attributes inherited from QObject
QScopedPointer< QObjectDatad_ptr
 
- Protected Attributes inherited from QPaintDevice
ushort painters
 

Detailed Description

\inmodule QtWidgets

Since
6.7

The QRhiWidget class is a widget for rendering 3D graphics via an accelerated grapics API, such as Vulkan, Metal, or Direct 3D.

\preliminary

Note
QRhiWidget is in tech preview in Qt 6.7. {The API is under development and subject to change.}

QRhiWidget provides functionality for displaying 3D content rendered through the \l QRhi APIs within a QWidget-based application. In many ways it is the portable equivalent of \l QOpenGLWidget that is not tied to a single 3D graphics API, but rather can function with all the APIs QRhi supports (such as, Direct 3D 11/12, Vulkan, Metal, and OpenGL).

QRhiWidget is expected to be subclassed. To render into the 2D texture that is implicitly created and managed by the QRhiWidget, subclasses should reimplement the virtual functions initialize() and render().

The size of the texture will by default adapt to the size of the widget. If a fixed size is preferred, set a fixed size specified in pixels by calling setFixedColorBufferSize().

In addition to the texture serving as the color buffer, a depth/stencil buffer and a render target binding these together is maintained implicitly as well.

The QRhi for the widget's top-level window is configured to use a platform-specific backend and graphics API by default: Metal on macOS and iOS, Direct 3D 11 on Windows, OpenGL otherwise. Call setApi() to override this.

Note
A single widget window can only use one QRhi backend, and so one single 3D graphics API. If two QRhiWidget or QQuickWidget widgets in the window's widget hierarchy request different APIs, only one of them will function correctly.
While QRhiWidget is a public Qt API, the QRhi family of classes in the Qt Gui module, including QRhi, QShader and QShaderDescription, offer limited compatibility guarantees. There are no source or binary compatibility guarantees for these classes, meaning the API is only guaranteed to work with the Qt version the application was developed against. Source incompatible changes are however aimed to be kept at a minimum and will only be made in minor releases (6.7, 6.8, and so on). {qrhiwidget.h} does not directly include any QRhi-related headers. To use those classes when implementing a QRhiWidget subclass, link to {Qt::GuiPrivate} (if using CMake), and include the appropriate headers with the rhi prefix, for example {#include <rhi/qrhi.h>}.

An example of a simple QRhiWidget subclass rendering a triangle is the following:

{
public:
void initialize(QRhiCommandBuffer *cb) override;
void render(QRhiCommandBuffer *cb) override;
private:
QRhi *m_rhi = nullptr;
std::unique_ptr<QRhiBuffer> m_vbuf;
std::unique_ptr<QRhiBuffer> m_ubuf;
std::unique_ptr<QRhiShaderResourceBindings> m_srb;
std::unique_ptr<QRhiGraphicsPipeline> m_pipeline;
QMatrix4x4 m_viewProjection;
float m_rotation = 0.0f;
};
float vertexData[] = {
0.0f, 0.5f, 1.0f, 0.0f, 0.0f,
-0.5f, -0.5f, 0.0f, 1.0f, 0.0f,
0.5f, -0.5f, 0.0f, 0.0f, 1.0f,
};
{
return f.open(QIODevice::ReadOnly) ? QShader::fromSerialized(f.readAll()) : QShader();
}
{
if (m_rhi != rhi()) {
m_pipeline.reset();
m_rhi = rhi();
}
if (!m_pipeline) {
m_vbuf->create();
m_ubuf->create();
m_srb.reset(m_rhi->newShaderResourceBindings());
m_srb->setBindings({
});
m_srb->create();
m_pipeline.reset(m_rhi->newGraphicsPipeline());
m_pipeline->setShaderStages({
{ QRhiShaderStage::Vertex, getShader(QLatin1String(":/shader_assets/color.vert.qsb")) },
{ QRhiShaderStage::Fragment, getShader(QLatin1String(":/shader_assets/color.frag.qsb")) }
});
QRhiVertexInputLayout inputLayout;
inputLayout.setBindings({
{ 5 * sizeof(float) }
});
inputLayout.setAttributes({
{ 0, 1, QRhiVertexInputAttribute::Float3, 2 * sizeof(float) }
});
m_pipeline->setVertexInputLayout(inputLayout);
m_pipeline->setShaderResourceBindings(m_srb.get());
m_pipeline->setRenderPassDescriptor(renderTarget()->renderPassDescriptor());
m_pipeline->create();
QRhiResourceUpdateBatch *resourceUpdates = m_rhi->nextResourceUpdateBatch();
resourceUpdates->uploadStaticBuffer(m_vbuf.get(), vertexData);
cb->resourceUpdate(resourceUpdates);
}
const QSize outputSize = colorTexture()->pixelSize();
m_viewProjection = m_rhi->clipSpaceCorrMatrix();
m_viewProjection.perspective(45.0f, outputSize.width() / (float) outputSize.height(), 0.01f, 1000.0f);
m_viewProjection.translate(0, 0, -4);
}
{
QRhiResourceUpdateBatch *resourceUpdates = m_rhi->nextResourceUpdateBatch();
m_rotation += 1.0f;
QMatrix4x4 modelViewProjection = m_viewProjection;
modelViewProjection.rotate(m_rotation, 0, 1, 0);
resourceUpdates->updateDynamicBuffer(m_ubuf.get(), 0, 64, modelViewProjection.constData());
const QColor clearColor = QColor::fromRgbF(0.4f, 0.7f, 0.0f, 1.0f);
cb->beginPass(renderTarget(), clearColor, { 1.0f, 0 }, resourceUpdates);
cb->setGraphicsPipeline(m_pipeline.get());
const QSize outputSize = colorTexture()->pixelSize();
cb->setViewport(QRhiViewport(0, 0, outputSize.width(), outputSize.height()));
cb->setShaderResources();
const QRhiCommandBuffer::VertexInput vbufBinding(m_vbuf.get(), 0);
cb->setVertexInput(0, 1, &vbufBinding);
cb->draw(3);
cb->endPass();
update();
}
ExampleRhiWidget(QWidget *parent=nullptr)
void initialize(QRhiCommandBuffer *cb) override
Called when the widget is initialized for the first time, when the associated texture's size,...
void render(QRhiCommandBuffer *cb) override
Called when the widget contents (i.e.
The QMatrix4x4 class represents a 4x4 transformation matrix in 3D space.
Definition qmatrix4x4.h:25
void rotate(float angle, const QVector3D &vector)
Multiples this matrix by another that rotates coordinates through angle degrees about vector.
void perspective(float verticalAngle, float aspectRatio, float nearPlane, float farPlane)
Multiplies this matrix by another that applies a perspective projection.
void translate(const QVector3D &vector)
Multiplies this matrix by another that translates coordinates by the components of vector.
@ Immutable
Definition qrhi.h:849
@ Dynamic
Definition qrhi.h:851
@ VertexBuffer
Definition qrhi.h:855
@ UniformBuffer
Definition qrhi.h:857
\inmodule QtGui
Definition qrhi.h:1651
QPair< QRhiBuffer *, quint32 > VertexInput
Synonym for QPair<QRhiBuffer *, quint32>.
Definition qrhi.h:1680
QRhiRenderPassDescriptor * renderPassDescriptor() const
Definition qrhi.h:1164
\inmodule QtGui
Definition qrhi.h:1731
void uploadStaticBuffer(QRhiBuffer *buf, quint32 offset, quint32 size, const void *data)
Enqueues updating a region of a QRhiBuffer buf created with the type QRhiBuffer::Immutable or QRhiBuf...
Definition qrhi.cpp:9011
static QRhiShaderResourceBinding uniformBuffer(int binding, StageFlags stage, QRhiBuffer *buf)
Definition qrhi.cpp:5526
QSize pixelSize() const
Definition qrhi.h:975
\inmodule QtGui
Definition qrhi.h:321
void setBindings(std::initializer_list< QRhiVertexInputBinding > list)
Sets the bindings from the specified list.
Definition qrhi.h:325
void setAttributes(std::initializer_list< QRhiVertexInputAttribute > list)
Sets the attributes from the specified list.
Definition qrhi.h:337
\inmodule QtGui
Definition qrhi.h:85
\inmodule QtWidgets
Definition qrhiwidget.h:19
QRhi * rhi() const
QRhiTexture * colorTexture() const
QRhiRenderTarget * renderTarget() const
\inmodule QtGuiPrivate \inheaderfile rhi/qrhi.h
Definition qrhi.h:1804
QRhiBuffer * newBuffer(QRhiBuffer::Type type, QRhiBuffer::UsageFlags usage, quint32 size)
Definition qrhi.cpp:10508
QMatrix4x4 clipSpaceCorrMatrix() const
Definition qrhi.cpp:10091
QRhiShaderResourceBindings * newShaderResourceBindings()
Definition qrhi.cpp:10489
QRhiGraphicsPipeline * newGraphicsPipeline()
Definition qrhi.cpp:10466
QRhiResourceUpdateBatch * nextResourceUpdateBatch()
Definition qrhi.cpp:9252
\inmodule QtGui
Definition qshader.h:81
static QShader fromSerialized(const QByteArray &data)
Creates a new QShader instance from the given data.
Definition qshader.cpp:540
constexpr int height() const noexcept
Returns the height.
Definition qsize.h:132
constexpr int width() const noexcept
Returns the width.
Definition qsize.h:129
void update()
Updates the widget unless updates are disabled or the widget is hidden.
static bool initialize()
Definition qctf.cpp:94
SSL_CTX int(* cb)(SSL *ssl, unsigned char **out, unsigned char *outlen, const unsigned char *in, unsigned int inlen, void *arg)
float vertexData[]
QShader getShader(const QString &name)

This is a widget that continuously requests updates, throttled by the presentation rate (vsync, depending on the screen refresh rate). If rendering continuously is not desired, the update() call in render() should be removed, and rather issued only when updating the rendered content is necessary. For example, if the rotation of the cube should be tied to the value of a QSlider, then connecting the slider's value change signal to a slot or lambda that forwards the new value and calls update() is sufficient.

The vertex and fragment shaders are provided as Vulkan-style GLSL and must be processed first by the Qt shader infrastructure first. This is achieved either by running the qsb command-line tool manually, or by using the \l{Qt Shader Tools Build System Integration}{qt_add_shaders()} function in CMake. The QRhiWidget implementation loads these pre-processed {.qsb} files that are shipped with the application. See \l{Qt Shader Tools} for more information about Qt's shader translation infrastructure.

The source code for these shaders could be the following:

{color.vert}

#version 440
layout(location = 0) in vec4 position;
layout(location = 1) in vec3 color;
layout(location = 0) out vec3 v_color;
layout(std140, binding = 0) uniform buf {
mat4 mvp;
};
void main()
{
v_color = color;
gl_Position = mvp * position;
}

{color.frag}

#version 440
layout(location = 0) in vec3 v_color;
layout(location = 0) out vec4 fragColor;
void main()
{
fragColor = vec4(v_color, 1.0);
}

The result is a widget that shows the following:

For a complete, minimal, introductory example check out the \l{Simple RHI Widget Example}.

For an example with more functionality and demonstration of further concepts, see the \l{Cube RHI Widget Example}.

QRhiWidget always involves rendering into a backing texture, not directly to the window (the surface or layer provided by the windowing system for the native window). This allows properly compositing the content with the rest of the widget-based UI, and offering a simple and compact API, making it easy to get started. All this comes at the expense of additional resources and a potential effect on performance. This is often perfectly acceptable in practice, but advanced users should keep in mind the pros and cons of the different approaches. Refer to the \l{RHI Window Example} and compare it with the \l{Simple RHI Widget Example} for details about the two approaches.

Reparenting a QRhiWidget into a widget hierarchy that belongs to a different window (top-level widget), or making the QRhiWidget itself a top-level (by setting the parent to \nullptr), involves changing the associated QRhi (and potentially destroying the old one) while the QRhiWidget continues to stay alive and well. To support this, robust QRhiWidget implementations are expected to reimplement the releaseResources() virtual function as well, and drop their QRhi resources just as they do in the destructor. The \l{Cube RHI Widget Example} demonstrates this in practice.

While not a primary use case, QRhiWidget also allows incorporating rendering code that directly uses a 3D graphics API such as Vulkan, Metal, Direct 3D, or OpenGL. See \l QRhiCommandBuffer::beginExternal() for details on recording native commands within a QRhi render pass, as well as \l QRhiTexture::createFrom() for a way to wrap an existing native texture and then use it with QRhi in a subsequent render pass. Note however that the configurability of the underlying graphics API (its device or context features, layers, extensions, etc.) is going to be limited since QRhiWidget's primary goal is to provide an environment suitable for QRhi-based rendering code, not to enable arbitrary, potentially complex, foreign rendering engines.

Since
6.7
See also
QRhi, QShader, QOpenGLWidget, {Simple RHI Widget Example}, {Cube RHI Widget Example}

Definition at line 18 of file qrhiwidget.h.

Member Enumeration Documentation

◆ Api

enum class QRhiWidget::Api
strong

Specifies the 3D API and QRhi backend to use.

\value Null \value OpenGL \value Metal \value Vulkan \value Direct3D11 \value Direct3D12

See also
QRhi
Enumerator
Null 
OpenGL 
Metal 
Vulkan 
Direct3D11 
Direct3D12 

Definition at line 32 of file qrhiwidget.h.

◆ TextureFormat

enum class QRhiWidget::TextureFormat
strong

Specifies the format of the texture to which the QRhiWidget renders.

\value RGBA8 See QRhiTexture::RGBA8. \value RGBA16F See QRhiTexture::RGBA16F. \value RGBA32F See QRhiTexture::RGBA32F. \value RGB10A2 See QRhiTexture::RGB10A2.

See also
QRhiTexture
Enumerator
RGBA8 
RGBA16F 
RGBA32F 
RGB10A2 

Definition at line 42 of file qrhiwidget.h.

Constructor & Destructor Documentation

◆ QRhiWidget()

QRhiWidget::QRhiWidget ( QWidget * parent = nullptr,
Qt::WindowFlags f = {} )
explicit

Constructs a widget which is a child of parent, with widget flags set to f.

Definition at line 173 of file qrhiwidget.cpp.

References d, QPlatformBackingStoreRhiConfig::D3D11, QPlatformBackingStoreRhiConfig::Metal, QPlatformBackingStoreRhiConfig::OpenGL, QGuiApplicationPrivate::platformIntegration(), Q_UNLIKELY, qWarning, and QPlatformIntegration::RhiBasedRendering.

+ Here is the call graph for this function:

◆ ~QRhiWidget()

QRhiWidget::~QRhiWidget ( )
override

Destructor.

Definition at line 195 of file qrhiwidget.cpp.

References d, and qDeleteAll().

+ Here is the call graph for this function:

Member Function Documentation

◆ api()

QRhiWidget::Api QRhiWidget::api ( ) const
Returns
the currently set graphics API (QRhi backend).
See also
setApi()

Definition at line 689 of file qrhiwidget.cpp.

References d, QPlatformBackingStoreRhiConfig::D3D11, QPlatformBackingStoreRhiConfig::D3D12, Direct3D11, Direct3D12, QPlatformBackingStoreRhiConfig::Metal, Metal, QPlatformBackingStoreRhiConfig::Null, Null, QPlatformBackingStoreRhiConfig::OpenGL, OpenGL, QPlatformBackingStoreRhiConfig::Vulkan, and Vulkan.

Referenced by setApi().

+ Here is the caller graph for this function:

◆ colorBufferFormat()

QRhiWidget::TextureFormat QRhiWidget::colorBufferFormat ( ) const

Definition at line 804 of file qrhiwidget.cpp.

References d.

◆ colorBufferFormatChanged

void QRhiWidget::colorBufferFormatChanged ( TextureFormat format)
signal

Referenced by setColorBufferFormat().

+ Here is the caller graph for this function:

◆ colorTexture()

QRhiTexture * QRhiWidget::colorTexture ( ) const
protected
Returns
the texture serving as the color buffer for the widget.

Must only be called from initialize() and render().

Unlike the depth-stencil buffer and the QRhiRenderTarget, this texture is always available and is managed by the QRhiWidget, independent of the value of \l autoRenderTarget.

Note
When \l sampleCount is larger than 1, and so multisample antialiasing is enabled, the return value is \nullptr. Instead, query the \l QRhiRenderBuffer by calling msaaColorBuffer().
The backing texture size and sample count can also be queried via the QRhiRenderTarget returned from renderTarget(). This can be more convenient and compact than querying from the QRhiTexture or QRhiRenderBuffer, because it works regardless of multisampling is in use or not.
See also
msaaColorBuffer(), depthStencilBuffer(), renderTarget(), resolveTexture()

Definition at line 1175 of file qrhiwidget.cpp.

References d.

Referenced by ExampleRhiWidget::initialize(), and ExampleRhiWidget::render().

+ Here is the caller graph for this function:

◆ depthStencilBuffer()

QRhiRenderBuffer * QRhiWidget::depthStencilBuffer ( ) const
protected
Returns
the depth-stencil buffer used by the widget's rendering.

Must only be called from initialize() and render().

Available only when \l autoRenderTarget is true. Otherwise the returned value is \nullptr and it is up the reimplementation of initialize() to create and manage a depth-stencil buffer and a QRhiTextureRenderTarget.

See also
colorTexture(), renderTarget()

Definition at line 1259 of file qrhiwidget.cpp.

References d.

◆ event()

bool QRhiWidget::event ( QEvent * e)
overrideprotectedvirtual

\reimp

Reimplemented from QObject.

Definition at line 276 of file qrhiwidget.cpp.

References d, QWidget::event(), QWidget::isVisible(), releaseResources(), QEvent::Show, QWidget::size, QEvent::type(), and QEvent::WindowAboutToChangeInternal.

+ Here is the call graph for this function:

◆ fixedColorBufferSize()

QSize QRhiWidget::fixedColorBufferSize ( ) const

Definition at line 901 of file qrhiwidget.cpp.

References d.

◆ fixedColorBufferSizeChanged

void QRhiWidget::fixedColorBufferSizeChanged ( const QSize & pixelSize)
signal

Referenced by setFixedColorBufferSize().

+ Here is the caller graph for this function:

◆ frameSubmitted

void QRhiWidget::frameSubmitted ( )
signal

This signal is emitted after the widget's top-level window has finished composition and has \l{QRhi::endFrame()}{submitted a frame}.

◆ grabFramebuffer()

QImage QRhiWidget::grabFramebuffer ( ) const

Renders a new frame, reads the contents of the texture back, and returns it as a QImage.

When an error occurs, a null QImage is returned.

The returned QImage will have a format of QImage::Format_RGBA8888, QImage::Format_RGBA16FPx4, QImage::Format_RGBA32FPx4, or QImage::Format_BGR30, depending on colorBufferFormat().

QRhiWidget does not know the renderer's approach to blending and composition, and therefore cannot know if the output has alpha premultiplied in the RGB color values. Thus {_Premultiplied} QImage formats are never used for the returned QImage, even when it would be appropriate. It is up to the caller to reinterpret the resulting data as it sees fit.

Note
This function can also be called when the QRhiWidget is not added to a widget hierarchy belonging to an on-screen top-level window. This allows generating an image from a 3D rendering off-screen.

The function is named grabFramebuffer() for consistency with QOpenGLWidget and QQuickWidget. It is not the only way to get CPU-side image data out of the QRhiWidget's content: calling \l QWidget::grab() on a QRhiWidget, or an ancestor of it, is functional as well (returning a QPixmap). Besides working directly with QImage, another advantage of grabFramebuffer() is that it may be slightly more performant, simply because it does not have to go through the rest of QWidget infrastructure but can right away trigger rendering a new frame and then do the readback.

See also
setColorBufferFormat()

Definition at line 1012 of file qrhiwidget.cpp.

References grabFramebuffer().

Referenced by grabFramebuffer().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ initialize()

void QRhiWidget::initialize ( QRhiCommandBuffer * cb)
protectedvirtual

Called when the widget is initialized for the first time, when the associated texture's size, format, or sample count changes, or when the QRhi and texture change for any reason.

The function is expected to maintain (create if not yet created, adjust and rebuild if the size has changed) the graphics resources used by the rendering code in render().

To query the QRhi, QRhiTexture, and other related objects, call rhi(), colorTexture(), depthStencilBuffer(), and renderTarget().

When the widget size changes, the QRhi object, the color buffer texture, and the depth stencil buffer objects are all the same instances (so the getters return the same pointers) as before, but the color and depth/stencil buffers will likely have been rebuilt, meaning the \l{QRhiTexture::pixelSize()}{size} and the underlying native texture resource may be different than in the last invocation.

Reimplementations should also be prepared that the QRhi object and the color buffer texture may change between invocations of this function. One special case where the objects will be different is when performing a grabFramebuffer() with a widget that is not yet shown, and then making the widget visible on-screen within a top-level widget. There the grab will happen with a dedicated QRhi that is then replaced with the top-level window's associated QRhi in subsequent initialize() and render() invocations. Another, more common case is when the widget is reparented so that it belongs to a new top-level window. In this case the QRhi and all related resources managed by the QRhiWidget will be different instances than before in the subsequent call to this function. Is is then important that all existing QRhi resources previously created by the subclass are destroyed because they belong to the previous QRhi that should not be used by the widget anymore.

When \l autoRenderTarget is true, which is the default, a depth-stencil QRhiRenderBuffer and a QRhiTextureRenderTarget associated with colorTexture() (or msaaColorBuffer()) and the depth-stencil buffer are created and managed automatically. Reimplementations of initialize() and render() can query those objects via depthStencilBuffer() and renderTarget(). When \l autoRenderTarget is set to false, these objects are no longer created and managed automatically. Rather, it will be up the the initialize() implementation to create buffers and set up the render target as it sees fit. When manually managing additional color or depth-stencil attachments for the render target, their size and sample count must always follow the size and sample count of colorTexture() / msaaColorBuffer(), otherwise rendering or 3D API validation errors may occur.

The subclass-created graphics resources are expected to be released in the destructor implementation of the subclass.

cb is the QRhiCommandBuffer for the current frame of the widget. The function is called with a frame being recorded, but without an active render pass. The command buffer is provided primarily to allow enqueuing \l{QRhiCommandBuffer::resourceUpdate()}{resource updates} without deferring to render().

See also
render()

Reimplemented in ExampleRhiWidget.

Definition at line 1074 of file qrhiwidget.cpp.

References cb, and Q_UNUSED.

◆ isAutoRenderTargetEnabled()

bool QRhiWidget::isAutoRenderTargetEnabled ( ) const
protected

Definition at line 951 of file qrhiwidget.cpp.

References d.

◆ isDebugLayerEnabled()

bool QRhiWidget::isDebugLayerEnabled ( ) const
Returns
true if a debug or validation layer will be requested if applicable to the graphics API in use.
See also
setDebugLayerEnabled()

Definition at line 758 of file qrhiwidget.cpp.

References d.

◆ isMirrorVerticallyEnabled()

bool QRhiWidget::isMirrorVerticallyEnabled ( ) const

Definition at line 927 of file qrhiwidget.cpp.

References d.

◆ mirrorVerticallyChanged

void QRhiWidget::mirrorVerticallyChanged ( bool enabled)
signal

Referenced by setMirrorVertically().

+ Here is the caller graph for this function:

◆ msaaColorBuffer()

QRhiRenderBuffer * QRhiWidget::msaaColorBuffer ( ) const
protected
Returns
the renderbuffer serving as the multisample color buffer for the widget.

Must only be called from initialize() and render().

When \l sampleCount is larger than 1, and so multisample antialising is enabled, the returned QRhiRenderBuffer has a matching sample count and serves as the color buffer. Graphics pipelines used to render into this buffer must be created with the same sample count, and the depth-stencil buffer's sample count must match as well. The multisample content is expected to be resolved into the texture returned from resolveTexture(). When \l autoRenderTarget is true, renderTarget() is set up automatically to do this, by setting up msaaColorBuffer() as the \l{QRhiColorAttachment::renderBuffer()}{renderbuffer} of color attachment 0 and resolveTexture() as its \l{QRhiColorAttachment::resolveTexture()}{resolveTexture}.

When MSAA is not in use, the return value is \nullptr. Use colorTexture() instead then.

Depending on the underlying 3D graphics API, there may be no practical difference between multisample textures and color renderbuffers with a sample count larger than 1 (QRhi may just map both to the same native resource type). Some older APIs however may differentiate between textures and renderbuffers. In order to support OpenGL ES 3.0, where multisample renderbuffers are available, but multisample textures are not, QRhiWidget always performs MSAA by using a multisample QRhiRenderBuffer as the color attachment (and never a multisample QRhiTexture).

Note
The backing texture size and sample count can also be queried via the QRhiRenderTarget returned from renderTarget(). This can be more convenient and compact than querying from the QRhiTexture or QRhiRenderBuffer, because it works regardless of multisampling is in use or not.
See also
colorTexture(), depthStencilBuffer(), renderTarget(), resolveTexture()

Definition at line 1217 of file qrhiwidget.cpp.

References d.

◆ paintEvent()

void QRhiWidget::paintEvent ( QPaintEvent * e)
overrideprotectedvirtual

Handles paint events.

Calling QWidget::update() will lead to sending a paint event e, and thus invoking this function. The sending of the event is asynchronous and will happen at some point after returning from update(). This function will then, after some preparation, call the virtual render() to update the contents of the QRhiWidget's associated texture. The widget's top-level window will then composite the texture with the rest of the window.

Reimplemented from QWidget.

Definition at line 243 of file qrhiwidget.cpp.

References cb, d, emit, QRhi::FrameOpSuccess, qWarning, render(), renderFailed(), and QWidget::updatesEnabled.

+ Here is the call graph for this function:

◆ releaseResources()

void QRhiWidget::releaseResources ( )
protectedvirtual

Called when the need to early-release the graphics resources arises.

This normally does not happen for a QRhiWidget that is added to a top-level widget's child hierarchy and it then stays there for the rest of its and the top-level's lifetime. Thus in many cases there is no need to reimplement this function, e.g. because the application only ever has a single top-level widget (native window). However, when reparenting of the widget (or an ancestor of it) is involved, reimplementing this function will become necessary in robust, well-written QRhiWidget subclasses.

When this function is called, the implementation is expected to destroy all QRhi resources (QRhiBuffer, QRhiTexture, etc. objects), similarly to how it is expected to do this in the destructor. Nulling out, using a smart pointer, or setting a {resources-invalid} flag is going to be required as well, because initialize() will eventually get called afterwards. Note however that deferring the releasing of resources to the subsequent initialize() is wrong. If this function is called, the resource must be dropped before returning. Also note that implementing this function does not replace the class destructor (or smart pointers): the graphics resources must still be released in both.

See the \l{Cube RHI Widget Example} for an example of this in action. There the button that toggles the QRhiWidget between being a child widget (due to having a parent widget) and being a top-level widget (due to having no parent widget), will trigger invoking this function since the associated top-level widget, native window, and QRhi all change during the lifetime of the QRhiWidget, with the previously used QRhi getting destroyed which implies an early-release of the associated resources managed by the still-alive QRhiWidget.

Another case when this function is called is when grabFramebuffer() is used with a QRhiWidget that is not added to a visible window, i.e. the rendering is performed offscreen. If later on this QRhiWidget is made visible, or added to a visible widget hierarchy, the associated QRhi will change from the temporary one used for offscreen rendering to the window's dedicated one, thus triggering this function as well.

See also
initialize()

Definition at line 1140 of file qrhiwidget.cpp.

Referenced by event().

+ Here is the caller graph for this function:

◆ render()

void QRhiWidget::render ( QRhiCommandBuffer * cb)
protectedvirtual

Called when the widget contents (i.e.

the contents of the texture) need updating.

There is always at least one call to initialize() before this function is called.

To request updates, call QWidget::update(). Calling update() from within render() will lead to updating continuously, throttled by vsync.

cb is the QRhiCommandBuffer for the current frame of the widget. The function is called with a frame being recorded, but without an active render pass.

See also
initialize()

Reimplemented in ExampleRhiWidget.

Definition at line 1095 of file qrhiwidget.cpp.

References cb, and Q_UNUSED.

Referenced by paintEvent().

+ Here is the caller graph for this function:

◆ renderFailed

void QRhiWidget::renderFailed ( )
signal

This signal is emitted whenever the widget is supposed to render to its backing texture (either due to a \l{QWidget::update()}{widget update} or due to a call to grabFramebuffer()), but there is no \l QRhi for the widget to use, likely due to issues related to graphics configuration.

This signal may be emitted multiple times when a problem arises. Do not assume it is emitted only once. Connect with Qt::SingleShotConnection if the error handling code is to be notified only once.

Referenced by paintEvent().

+ Here is the caller graph for this function:

◆ renderTarget()

QRhiRenderTarget * QRhiWidget::renderTarget ( ) const
protected
Returns
the render target object that must be used with \l QRhiCommandBuffer::beginPass() in reimplementations of render().

Must only be called from initialize() and render().

Available only when \l autoRenderTarget is true. Otherwise the returned value is \nullptr and it is up the reimplementation of initialize() to create and manage a depth-stencil buffer and a QRhiTextureRenderTarget.

When creating \l{QRhiGraphicsPipeline}{graphics pipelines}, a QRhiRenderPassDescriptor is needed. This can be queried from the returned QRhiTextureRenderTarget by calling \l{QRhiTextureRenderTarget::renderPassDescriptor()}{renderPassDescriptor()}.

See also
colorTexture(), depthStencilBuffer()

Definition at line 1283 of file qrhiwidget.cpp.

References d.

Referenced by ExampleRhiWidget::initialize(), and ExampleRhiWidget::render().

+ Here is the caller graph for this function:

◆ resizeEvent()

void QRhiWidget::resizeEvent ( QResizeEvent * e)
overrideprotectedvirtual

Handles resize events that are passed in the e event parameter.

Calls the virtual function initialize().

Note
Avoid overriding this function in derived classes. If that is not feasible, make sure that QRhiWidget's implementation is invoked too. Otherwise the underlying texture object and related resources will not get resized properly and will lead to incorrect rendering.

Reimplemented from QWidget.

Definition at line 220 of file qrhiwidget.cpp.

References d, QSize::isEmpty(), QResizeEvent::size(), and QWidget::size.

+ Here is the call graph for this function:

◆ resolveTexture()

QRhiTexture * QRhiWidget::resolveTexture ( ) const
protected
Returns
the non-multisample texture to which the multisample content is resolved.

The result is \nullptr when multisample antialiasing is not enabled.

Must only be called from initialize() and render().

With MSAA enabled, this is the texture that gets composited with the rest of the QWidget content on-screen. However, the QRhiWidget's rendering must target the (multisample) QRhiRenderBuffer returned from msaaColorBuffer(). When \l autoRenderTarget is true, this is taken care of by the QRhiRenderTarget returned from renderTarget(). Otherwise, it is up to the subclass code to correctly configure a render target object with both the color buffer and resolve textures.

See also
colorTexture()

Definition at line 1241 of file qrhiwidget.cpp.

References d.

◆ rhi()

QRhi * QRhiWidget::rhi ( ) const
protected
Returns
the current QRhi object.

Must only be called from initialize() and render().

Definition at line 1149 of file qrhiwidget.cpp.

References d.

Referenced by ExampleRhiWidget::initialize().

+ Here is the caller graph for this function:

◆ sampleCount()

int QRhiWidget::sampleCount ( ) const

Definition at line 866 of file qrhiwidget.cpp.

References d.

◆ sampleCountChanged

void QRhiWidget::sampleCountChanged ( int samples)
signal

Referenced by setSampleCount().

+ Here is the caller graph for this function:

◆ setApi()

void QRhiWidget::setApi ( Api api)

Sets the graphics API and QRhi backend to use to api.

Warning
This function must be called early enough, before the widget is added to a widget hierarchy and displayed on screen. For example, aim to call the function for the subclass constructor. If called too late, the function will have no effect.

The default value depends on the platform: Metal on macOS and iOS, Direct 3D 11 on Windows, OpenGL otherwise.

The api can only be set once for the widget and its top-level window, once it is done and takes effect, the window can only use that API and QRhi backend to render. Attempting to set another value, or to add another QRhiWidget with a different api will not function as expected.

See also
setColorBufferFormat(), setDebugLayerEnabled(), api()

Definition at line 727 of file qrhiwidget.cpp.

References api(), d, QPlatformBackingStoreRhiConfig::D3D11, QPlatformBackingStoreRhiConfig::D3D12, Direct3D11, Direct3D12, QPlatformBackingStoreRhiConfig::Metal, Metal, QPlatformBackingStoreRhiConfig::Null, Null, QPlatformBackingStoreRhiConfig::OpenGL, OpenGL, QPlatformBackingStoreRhiConfig::Vulkan, and Vulkan.

+ Here is the call graph for this function:

◆ setAutoRenderTarget()

void QRhiWidget::setAutoRenderTarget ( bool enabled)
protected

Controls if a depth-stencil QRhiRenderBuffer and a QRhiTextureRenderTarget is created and maintained automatically by the widget.

The default value is true.

In automatic mode, the size and sample count of the depth-stencil buffer follows the color buffer texture's settings. In non-automatic mode, renderTarget() and depthStencilBuffer() always return \nullptr and it is then up to the application's implementation of initialize() to take care of setting up and managing these objects.

Call this function with enabled set to false early on, for example in the derived class' constructor, to disable the automatic mode.

Definition at line 971 of file qrhiwidget.cpp.

References d, QWidget::enabled, and QWidget::update().

+ Here is the call graph for this function:

◆ setColorBufferFormat()

void QRhiWidget::setColorBufferFormat ( TextureFormat format)

Definition at line 810 of file qrhiwidget.cpp.

References colorBufferFormatChanged(), d, emit, QRhiTexture::RGB10A2, RGB10A2, QRhiTexture::RGBA16F, RGBA16F, QRhiTexture::RGBA32F, RGBA32F, QRhiTexture::RGBA8, RGBA8, and QWidget::update().

+ Here is the call graph for this function:

◆ setDebugLayerEnabled()

void QRhiWidget::setDebugLayerEnabled ( bool enable)

Requests the debug or validation layer of the underlying graphics API when enable is true.

Warning
This function must be called early enough, before the widget is added to a widget hierarchy and displayed on screen. For example, aim to call the function for the subclass constructor. If called too late, the function will have no effect.

Applicable for Vulkan and Direct 3D.

By default this is disabled.

See also
setApi(), isDebugLayerEnabled()

Definition at line 779 of file qrhiwidget.cpp.

References d.

◆ setFixedColorBufferSize() [1/2]

void QRhiWidget::setFixedColorBufferSize ( int w,
int h )
inline

Definition at line 64 of file qrhiwidget.h.

References setFixedColorBufferSize().

Referenced by setFixedColorBufferSize().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setFixedColorBufferSize() [2/2]

void QRhiWidget::setFixedColorBufferSize ( QSize pixelSize)

Definition at line 907 of file qrhiwidget.cpp.

References d, emit, fixedColorBufferSizeChanged(), and QWidget::update().

+ Here is the call graph for this function:

◆ setMirrorVertically()

void QRhiWidget::setMirrorVertically ( bool enabled)

Definition at line 933 of file qrhiwidget.cpp.

References d, emit, QWidget::enabled, mirrorVerticallyChanged(), and QWidget::update().

+ Here is the call graph for this function:

◆ setSampleCount()

void QRhiWidget::setSampleCount ( int samples)

Definition at line 872 of file qrhiwidget.cpp.

References d, emit, sampleCountChanged(), and QWidget::update().

+ Here is the call graph for this function:

Property Documentation

◆ colorBufferFormat

QRhiWidget::colorBufferFormat
readwrite

This property controls the texture format of the texture (or renderbuffer) used as the color buffer.

The default value is TextureFormat::RGBA8. QRhiWidget supports rendering to a subset of the formats supported by \l QRhiTexture. Only formats that are reported as supported from \l QRhi::isTextureFormatSupported() should be specified, rendering will not be functional otherwise.

Note
Setting a new format when the widget is already initialized and has rendered implies that all QRhiGraphicsPipeline objects created by the renderer may become unusable, if the associated QRhiRenderPassDescriptor is now incompatible due to the different texture format. Similarly to changing \l sampleCount dynamically, this means that initialize() or render() implementations must then take care of releasing the existing pipelines and creating new ones.

Definition at line 23 of file qrhiwidget.h.

◆ fixedColorBufferSize

QRhiWidget::fixedColorBufferSize
readwrite

The fixed size, in pixels, of the QRhiWidget's associated texture.

Relevant when a fixed texture size is desired that does not depend on the widget's size. This size has no effect on the geometry of the widget (its size and placement within the top-level window), which means the texture's content will appear stretched (scaled up) or scaled down onto the widget's area.

For example, setting a size that is exactly twice the widget's (pixel) size effectively performs 2x supersampling (rendering at twice the resolution and then implicitly scaling down when texturing the quad corresponding to the widget in the window).

By default the value is a null QSize. A null or empty QSize means that the texture's size follows the QRhiWidget's size. ({texture size} = {widget size} * {device pixel ratio}).

Definition at line 24 of file qrhiwidget.h.

◆ mirrorVertically

QRhiWidget::mirrorVertically
readwrite

When enabled, flips the image around the X axis when compositing the QRhiWidget's backing texture with the rest of the widget content in the top-level window.

The default value is false.

Definition at line 25 of file qrhiwidget.h.

◆ sampleCount

QRhiWidget::sampleCount
readwrite

This property controls for sample count for multisample antialiasing.

By default the value is 1 which means MSAA is disabled.

Valid values are 1, 4, 8, and sometimes 16 and 32. \l QRhi::supportedSampleCounts() can be used to query the supported sample counts at run time, but typically applications should request 1 (no MSAA), 4x (normal MSAA) or 8x (high MSAA).

Note
Setting a new value implies that all QRhiGraphicsPipeline objects created by the renderer must use the same sample count from then on. Existing QRhiGraphicsPipeline objects created with a different sample count must not be used anymore. When the value changes, all color and depth-stencil buffers are destroyed and recreated automatically, and initialize() is invoked again. However, when \l autoRenderTarget is false, it will be up to the application to manage this with regards to the depth-stencil buffer or additional color buffers.

Changing the sample count from the default 1 to a higher value implies that colorTexture() becomes \nullptr and msaaColorBuffer() starts returning a valid object. Switching back to 1 (or 0), implies the opposite: in the next call to initialize() msaaColorBuffer() is going to return \nullptr, whereas colorTexture() becomes once again valid. In addition, resolveTexture() returns a valid (non-multisample) QRhiTexture whenever the sample count is greater than 1 (i.e., MSAA is in use).

See also
msaaColorBuffer(), resolveTexture()

Definition at line 22 of file qrhiwidget.h.


The documentation for this class was generated from the following files: