Inherits QObject and QPaintDevice.
Inherited by QAxWidget, QButton, QFrame, QDialog, QComboBox, QDataBrowser, QDataView, QDateTimeEditBase, QDateTimeEdit, QDesktopWidget, QDial, QDockArea, QGLWidget, QHeader, QMainWindow, QMotifWidget, QNPWidget, QScrollBar, QSizeGrip, QSlider, QSpinBox, QSplashScreen, QStatusBar, QTabBar, QTabWidget, QWorkspace, and QXtWidget.
The widget is the atom of the user interface: it receives mouse, keyboard and other events from the window system, and paints a representation of itself on the screen. Every widget is rectangular, and they are sorted in a Z-order. A widget is clipped by its parent and by the widgets in front of it.
A widget that isn't embedded in a parent widget is called a top-level widget. Usually, top-level widgets are windows with a frame and a title bar (although it is also possible to create top-level widgets without such decoration if suitable widget flags are used). In Qt, QMainWindow and the various subclasses of QDialog are the most common top-level windows.
A widget without a parent widget is always a top-level widget.
Non-top-level widgets are child widgets. These are child windows in their parent widgets. You cannot usually distinguish a child widget from its parent visually. Most other widgets in Qt are useful only as child widgets. (It is possible to make, say, a button into a top-level widget, but most people prefer to put their buttons inside other widgets, e.g. QDialog.)
If you want to use a QWidget to hold child widgets you will probably want to add a layout to the parent QWidget. (See Layouts.)
QWidget has many member functions, but some of them have little direct functionality: for example, QWidget has a font property, but never uses this itself. There are many subclasses which provide real functionality, such as QPushButton, QListBox and QTabDialog, etc.
functions isFocusEnabled(), setFocusPolicy(), focusPolicy(), hasFocus(), setFocus(), clearFocus(), setTabOrder(), setFocusProxy(). Mouse and | |
keyboard grabbing grabMouse(), releaseMouse(), grabKeyboard(), releaseKeyboard(), mouseGrabber(), keyboardGrabber(). Event handlers event(), mousePressEvent(), mouseReleaseEvent(), mouseDoubleClickEvent(), mouseMoveEvent(), keyPressEvent(), keyReleaseEvent(), focusInEvent(), focusOutEvent(), wheelEvent(), enterEvent(), leaveEvent(), paintEvent(), moveEvent(), resizeEvent(), closeEvent(), dragEnterEvent(), dragMoveEvent(), dragLeaveEvent(), dropEvent(), childEvent(), showEvent(), hideEvent(), customEvent(). Change handlers enabledChange(), fontChange(), paletteChange(), styleChange(), windowActivationChange(). System functions parentWidget(), topLevelWidget(), reparent(), polish(), winId(), find(), metric(). What's this help customWhatsThis() Internal kernel | |
functions |
Every widget's constructor accepts two or three standard arguments: <ol type=1>
The tictac/tictac.cpp example program is good example of a simple widget. It contains a few event handlers (as all widgets must), a few custom routines that are specific to it (as all useful widgets do), and has a few children and connections. Everything it does is done in response to an event: this is by far the most common way to design GUI applications.
You will need to supply the content for your widgets yourself, but here is a brief run-down of the events, starting with the most common ones:
If your widget only contains child widgets, you probably do not need to implement any event handlers. If you want to detect a mouse click in a child widget call the child's hasMouse() function inside the parent widget's mousePressEvent().
Widgets that accept keyboard input need to reimplement a few more event handlers:
Some widgets will also need to reimplement some of the less common event handlers:
There are also some rather obscure events. They are listed in qevent.h and you need to reimplement event() to handle them. The default implementation of event() handles Tab and Shift+Tab (to move the keyboard focus), and passes on most other events to one of the more specialized handlers above.
When implementing a widget, there are a few more things to consider.
See also QEvent, QPainter, QGridLayout, QBoxLayout, and Abstract Widget Classes.
The pixmap is drawn using the:
If parent is 0, the new widget becomes a top-level window. If parent is another widget, this widget becomes a child window inside parent. The new widget is deleted when its parent is deleted.
The name is sent to the QObject constructor.
The widget flags argument, f, is normally 0, but it can be set to customize the window frame of a top-level widget (i.e. parent must be 0). To customize the frame, set the WStyle_Customize flag OR'ed with any of the Qt::WidgetFlags.
If you add a child widget to an already visible widget you must explicitly show the child to make it visible.
Note that the X11 version of Qt may not be able to deliver all combinations of style flags on all systems. This is because on X11, Qt can only ask the window manager, and the window manager can override the application's settings. On Windows, Qt can set whatever flags you want.
Example:
QLabel *splashScreen = new QLabel( 0, "mySplashScreen",
WStyle_Customize | WStyle_Splash );
All this widget's children are deleted first. The application exits if this widget is the main widget.
Uses sizeHint() if valid (i.e if the size hint's width and height are >= 0), otherwise sets the size to the children rectangle (the union of all child widget geometries).
See also sizeHint and childrenRect.
Example: xform/xform.cpp.
If includeThis is TRUE, and there is no child visible at (x, y), the widget itself is returned.
Returns the visible child widget at point p in the widget's own coordinate system.
If includeThis is TRUE, and there is no child visible at p, the widget itself is returned.
If the widget has active focus, a focus out event is sent to this widget to tell it that it is about to lose the focus.
This widget must enable focus setting in order to get the keyboard input focus, i.e. it must call setFocusPolicy().
See also focus, setFocus(), focusInEvent(), focusOutEvent(), focusPolicy, and QApplication::focusWidget().
Widget flags are a combination of Qt::WidgetFlags.
See also testWFlags(), getWFlags(), and setWFlags().
For visible widgets, this is an approximation of the area not covered by other widgets; otherwise, this is an empty region.
The repaint() function calls this function if necessary, so in general you do not need to call it.
First it sends the widget a QCloseEvent. The widget is hidden if it accepts the close event. The default implementation of QWidget::closeEvent() accepts the close event.
The QApplication::lastWindowClosed() signal is emitted when the last visible top level widget is closed.
Closes this widget. Returns TRUE if the widget was closed; otherwise returns FALSE.
If alsoDelete is TRUE or the widget has the WDestructiveClose widget flag, the widget is also deleted. The widget can prevent itself from being closed by rejecting the QCloseEvent it gets. A close events is delivered to the widget no matter if the widget is visible or not.
The QApplication::lastWindowClosed() signal is emitted when the last visible top level widget is closed.
Note that closing the QApplication::mainWidget() terminates the application.
See also closeEvent(), QCloseEvent, hide(), QApplication::quit(), QApplication::setMainWidget(), and QApplication::lastWindowClosed().
The default implementation calls e->accept(), which hides this widget. See the QCloseEvent documentation for more details.
See also event(), hide(), close(), and QCloseEvent.
Call constPolish() from functions like sizeHint() that depends on the widget being initialized, and that may be called before show().
Warning: Do not call constPolish() on a widget from inside that widget's constructor.
The default implementation calls e->ignore(), which rejects the context event. See the QContextMenuEvent documentation for more details.
See also event() and QContextMenuEvent.
Initializes the window (sets the geometry etc.) if initializeWindow is TRUE. If initializeWindow is FALSE, no initialization is performed. This parameter only makes sense if window is a valid window.
Destroys the old window if destroyOldWindow is TRUE. If destroyOldWindow is FALSE, you are responsible for destroying the window yourself (using platform native code).
The QWidget constructor calls create(0,TRUE,TRUE) to create a window for this widget.
destroy() calls itself recursively for all the child widgets, passing destroySubWindows for the destroyWindow parameter. To have more control over destruction of subwidgets, destroy subwidgets selectively first.
This function is usually called from the QWidget destructor.
See the Drag-and-drop documentation for an overview of how to provide drag-and-drop in your application.
See also QTextDrag, QImageDrag, and QDragEnterEvent.
Example: iconview/simple_dd/main.cpp.
See the Drag-and-drop documentation for an overview of how to provide drag-and-drop in your application.
See also QTextDrag, QImageDrag, and QDragLeaveEvent.
See the Drag-and-drop documentation for an overview of how to provide drag-and-drop in your application.
See also QTextDrag, QImageDrag, and QDragMoveEvent.
The y position is the base line position of the text. The text is drawn using the default font and the default foreground color.
This function is provided for convenience. You will generally get more flexible results and often higher speed by using a a painter instead.
See also font, foregroundColor(), and QPainter::drawText().
Draws the string str at position pos.
See the Drag-and-drop documentation for an overview of how to provide drag-and-drop in your application.
See also QTextDrag, QImageDrag, and QDropEvent.
Example: iconview/simple_dd/main.cpp.
Reimplement this function if your widget needs to know when it becomes enabled or disabled. You will almost certainly need to update the widget using update().
The default implementation repaints the visible part of the widget.
See also enabled, enabled, repaint(), update(), and clipRegion().
An event is sent to the widget when the mouse cursor enters the widget.
See also leaveEvent(), mouseMoveEvent(), and event().
If w is negative, it is replaced with width() - x. If h is negative, it is replaced width height() - y.
Child widgets are not affected.
This version erases the entire widget.
Erases the specified area r in the widget without generating a paint event.
Erases the area defined by reg, without generating a paint event.
Child widgets are not affected.
See also setEraseColor(), setErasePixmap(), and backgroundColor().
See also setErasePixmap() and eraseColor().
The main event handler first passes an event through all event filters that have been installed. If none of the filters intercept the event, it calls one of the specialized event handlers.
Key press and release events are treated differently from other events. event() checks for Tab and Shift+Tab and tries to move the focus appropriately. If there is no widget to move the focus to (or the key press is not Tab or Shift+Tab), event() calls keyPressEvent().
This function returns TRUE if it is able to pass the event over to someone (i.e. someone wanted the event); otherwise returns FALSE.
See also closeEvent(), focusInEvent(), focusOutEvent(), enterEvent(), keyPressEvent(), keyReleaseEvent(), leaveEvent(), mouseDoubleClickEvent(), mouseMoveEvent(), mousePressEvent(), mouseReleaseEvent(), moveEvent(), paintEvent(), resizeEvent(), QObject::event(), and QObject::timerEvent().
The window identifier type depends on the underlying window system, see qwindowdefs.h for the actual definition. If there is no widget with this identifier, 0 is returned.
Focus data always belongs to the top-level widget. The focus data list contains all the widgets in this top-level widget that can accept focus, in tab order. An iterator points to the current focus widget (focusWidget() returns a pointer to this widget).
This information is useful for implementing advanced versions of focusNextPrevChild().
A widget normally must setFocusPolicy() to something other than NoFocus in order to receive focus events. (Note that the application programmer can call setFocus() on any widget, even those that do not normally accept focus.)
The default implementation updates the widget (except for toplevel widgets that do not specify a focusPolicy() ). It also calls setMicroFocusHint(), hinting any system-specific input tools about the focus of the user's attention.
See also focusOutEvent(), focusPolicy, keyPressEvent(), keyReleaseEvent(), event(), and QFocusEvent.
If next is TRUE, this function searches "forwards", if next is FALSE, it searches "backwards".
Sometimes, you will want to reimplement this function. For example, a web browser might reimplement it to move its "current active link" forwards or backwards, and call QWidget::focusNextPrevChild() only when it reaches the last or first link on the "page".
Child widgets call focusNextPrevChild() on their parent widgets, but only the top-level widget decides where to redirect focus. By overriding this method for an object, you thus gain control of focus traversal for all child widgets.
Warning: QScrollView uses it own logic for this function, which does the right thing in most cases. But if you are using a QScrollView and want complete control of the focus chain you'll need to override QScrollView::focusNextPrevChild() and your top-level widgets' focusNextPrevChild() functions.
A widget normally must setFocusPolicy() to something other than NoFocus in order to receive focus events. (Note that the application programmer can call setFocus() on any widget, even those that do not normally accept focus.)
The default implementation updates the widget (except for toplevel widgets that do not specify a focusPolicy() ). It also calls setMicroFocusHint(), hinting any system-specific input tools about the focus of the user's attention.
See also focusInEvent(), focusPolicy, keyPressEvent(), keyReleaseEvent(), event(), and QFocusEvent.
Reimplement this function if your widget needs to know when its font changes. You will almost certainly need to update the widget using update().
The default implementation updates the widget including its geometry.
See also font, font, update(), and updateGeometry().
See also font, fontMetrics(), and font.
See also font, fontInfo(), and font.
Widget flags are a combination of Qt::WidgetFlags.
See also testWFlags(), setWFlags(), and clearWFlags().
This widget reveives all keyboard events until releaseKeyboard() is called; other widgets get no keyboard events at all. Mouse events are not affected. Use grabMouse() if you want to grab that.
The focus widget is not affected, except that it doesn't receive any keyboard events. setFocus() moves the focus as usual, but the new focus widget receives keyboard events only after releaseKeyboard() is called.
If a different widget is currently grabbing keyboard input, that widget's grab is released first.
See also releaseKeyboard(), grabMouse(), releaseMouse(), and focusWidget().
This widget receives all mouse events until releaseMouse() is called; other widgets get no mouse events at all. Keyboard events are not affected. Use grabKeyboard() if you want to grab that.
Warning: Bugs in mouse-grabbing applications very often lock the terminal. Use this function with extreme caution, and consider using the -nograb command line option while debugging.
It is almost never necessary to grab the mouse when using Qt, as Qt grabs and releases it sensibly. In particular, Qt grabs the mouse when a mouse button is pressed and keeps it until the last button is released.
Note that only visible widgets can grab mouse input. If isVisible() returns FALSE for a widget, that widget cannot call grabMouse().
See also releaseMouse(), grabKeyboard(), releaseKeyboard(), grabKeyboard(), and focusWidget().
Grabs the mouse input and changes the cursor shape.
The cursor will assume shape cursor (for as long as the mouse focus is grabbed) and this widget will be the only one to receive mouse events until releaseMouse() is called().
Warning: Grabbing the mouse might lock the terminal.
See also releaseMouse(), grabKeyboard(), releaseKeyboard(), and cursor.
Warning: Does not look at the widget's layout.
Reimplemented in QMenuBar and QTextEdit.
You almost never have to reimplement this function. If you need to do something after a widget is hidden, use hideEvent() instead.
See also hideEvent(), hidden, show(), showMinimized(), visible, and close().
Examples:
Hide events are sent to widgets immediately after they have been hidden.
See also event() and QHideEvent.
The default implementation calls e->ignore(), which rejects the Input Method event. See the QIMEvent documentation for more details.
See also event() and QIMEvent.
The default implementation calls e->ignore(), which rejects the Input Method event. See the QIMEvent documentation for more details.
See also event() and QIMEvent.
The default implementation calls e->ignore(), which rejects the Input Method event. See the QIMEvent documentation for more details.
See also event() and QIMEvent.
This is the case if neither the widget itself nor every parent up to but excluding ancestor has been explicitly disabled.
isEnabledTo(0) is equivalent to isEnabled().
This function is deprecated. It is equivalent to isEnabled()
The TRUE case occurs if neither the widget itself nor any parent up to but excluding ancestor has been explicitly hidden.
This function will still return TRUE if the widget is obscured by other windows on the screen, but could be physically visible if it or they were to be moved.
isVisibleTo(0) is identical to isVisible().
See also show(), hide(), and visible.
This function is deprecated. It is equivalent to isVisible()
A widget must call setFocusPolicy() to accept focus initially and have focus in order to receive a key press event.
If you reimplement this handler, it is very important that you explicitly ignore the event if you do not understand it, so that the widget's parent can interpret it; otherwise, the event will be implicitly accepted. Although top-level widgets are able to choose whether to accept or ignore unknown events because they have no parent widgets that could otherwise handle them, it is good practice to explicitly ignore events to make widgets as reusable as possible.
The default implementation closes popup widgets if the user presses Esc. Otherwise the event is ignored.
See also keyReleaseEvent(), QKeyEvent::ignore(), focusPolicy, focusInEvent(), focusOutEvent(), event(), and QKeyEvent.
Example: picture/picture.cpp.
Reimplemented in QLineEdit and QTextEdit.
A widget must accept focus initially and have focus in order to receive a key release event.
If you reimplement this handler, it is very important that you ignore() the release if you do not understand it, so that the widget's parent can interpret it.
The default implementation ignores the event.
See also keyPressEvent(), QKeyEvent::ignore(), focusPolicy, focusInEvent(), focusOutEvent(), event(), and QKeyEvent.
If no widget in this application is currently grabbing the keyboard, 0 is returned.
See also grabMouse() and mouseGrabber().
If the widget does not have a layout, layout() returns 0.
See also sizePolicy.
A leave event is sent to the widget when the mouse cursor leaves the widget.
See also enterEvent(), mouseMoveEvent(), and event().
After this call the widget will be visually behind (and therefore obscured by) any overlapping sibling widgets.
See also raise() and stackUnder().
In your reimplementation of this function, if you want to stop the event being handled by Qt, return TRUE. If you return FALSE, this native event is passed back to Qt, which translates the event into a Qt event and sends it to the widget.
Warning: This function is not portable.
See also QApplication::macEventFilter().
See also mapTo(), mapFromParent(), mapFromGlobal(), and underMouse.
See also mapToGlobal(), mapFrom(), and mapFromParent().
Same as mapFromGlobal() if the widget has no parent.
See also mapToParent(), mapFrom(), mapFromGlobal(), and underMouse.
See also mapFrom(), mapToParent(), mapToGlobal(), and underMouse.
See also mapFromGlobal(), mapTo(), and mapToParent().
Example: scribble/scribble.cpp.
Same as mapToGlobal() if the widget has no parent.
See also mapFromParent(), mapTo(), mapToGlobal(), and underMouse.
Use the QPaintDeviceMetrics class instead.
The default implementation generates a normal mouse press event.
Note that the widgets gets a mousePressEvent() and a mouseReleaseEvent() before the mouseDoubleClickEvent().
See also mousePressEvent(), mouseReleaseEvent(), mouseMoveEvent(), event(), and QMouseEvent.
If no widget in this application is currently grabbing the mouse, 0 is returned.
See also grabMouse() and keyboardGrabber().
If mouse tracking is switched off, mouse move events only occur if a mouse button is pressed while the mouse is being moved. If mouse tracking is switched on, mouse move events occur even if no mouse button is pressed.
QMouseEvent::pos() reports the position of the mouse cursor, relative to this widget. For press and release events, the position is usually the same as the position of the last mouse move event, but it might be different if the user's hand shakes. This is a feature of the underlying window system, not Qt.
See also mouseTracking, mousePressEvent(), mouseReleaseEvent(), mouseDoubleClickEvent(), event(), and QMouseEvent.
Examples:
If you create new widgets in the mousePressEvent() the mouseReleaseEvent() may not end up where you expect, depending on the underlying window system (or X11 window manager), the widgets' location and maybe more.
The default implementation implements the closing of popup widgets when you click outside the window. For other widget types it does nothing.
See also mouseReleaseEvent(), mouseDoubleClickEvent(), mouseMoveEvent(), event(), and QMouseEvent.
Examples:
See also mouseDoubleClickEvent(), mouseMoveEvent(), event(), and QMouseEvent.
This corresponds to move( QPoint(x, y) ).
The old position is accessible through QMoveEvent::oldPos().
See also resizeEvent(), event(), pos, and QMoveEvent.
A paint event is a request to repaint all or part of the widget. It can happen as a result of repaint() or update(), or because the widget was obscured and has now been uncovered, or for many other reasons.
Many widgets can simply repaint their entire surface when asked to, but some slow widgets need to optimize by painting only the requested region: QPaintEvent::region(). This speed optimization does not change the result, as painting is clipped to that region during event processing. QListView and QCanvas do this, for example.
Qt also tries to speed up painting by merging multiple paint events into one. When update() is called several times or the window system sends several paint events, Qt merges these events into one event with a larger region (see QRegion::unite()). repaint() does not permit this optimization, so we suggest using update() when possible.
When the paint event occurs, the update region has normally been erased, so that you're painting on the widget's background. There are a couple of exceptions and QPaintEvent::erased() tells you whether the widget has been erased or not.
The background can be set using setBackgroundMode(), setPaletteBackgroundColor() or setBackgroundPixmap(). The documentation for setBackgroundMode() elaborates on the background; we recommend reading it.
See also event(), repaint(), update(), QPainter, QPixmap, and QPaintEvent.
Examples:
Reimplemented in QButton, QFrame, QGLWidget, QSizeGrip, QStatusBar, and QTabBar.
Reimplement this function if your widget needs to know when its palette changes.
This function will be called after a widget has been fully created and before it is shown the very first time.
Polishing is useful for final initialization which depends on having an instantiated widget. This is something a constructor cannot guarantee since the initialization of the subclasses might not be finished.
After this function, the widget has a proper font and palette and QApplication::polish() has been called.
Remember to call QWidget's implementation first when reimplementing this function to ensure that your program does not end up in infinite recursion.
See also constPolish() and QApplication::polish().
In your reimplementation of this function, if you want to stop the event being handled by Qt, return TRUE. If you return FALSE, this native event is passed back to Qt, which translates the event into a Qt event and sends it to the widget.
Warning: This function is not portable.
See also QApplication::qwsEventFilter().
After this call the widget will be visually in front of any overlapping sibling widgets.
See also lower() and stackUnder().
This method is provided to aid porting from Qt 1.0 to 2.0. It has been renamed reparent() in Qt 2.0.
See also grabKeyboard(), grabMouse(), and releaseMouse().
See also grabMouse(), grabKeyboard(), and releaseKeyboard().
If erase is TRUE, Qt erases the area (x, y, w, h) before the paintEvent() call.
If w is negative, it is replaced with width() - x, and if h is negative, it is replaced width height() - y.
We suggest only using repaint() if you need an immediate repaint, for example during animation. In almost all circumstances update() is better, as it permits Qt to optimize for speed and minimize flicker.
Warning: If you call repaint() in a function which may itself be called from paintEvent(), you may get infinite recursion. The update() function never causes recursion.
See also update(), paintEvent(), updatesEnabled, and erase().
This version erases and repaints the entire widget.
This version repaints the entire widget.
Repaints the widget directly by calling paintEvent() directly, unless updates are disabled or the widget is hidden.
Erases the widget region r if erase is TRUE.
Repaints the widget directly by calling paintEvent() directly, unless updates are disabled or the widget is hidden.
Erases the widget region reg if erase is TRUE.
Only use repaint if your widget needs to be repainted immediately, for example when doing some animation. In all other cases, use update(). Calling update() many times in a row will generate a single paint event.
Warning: If you call repaint() in a function which may itself be called from paintEvent(), you may get infinite recursion. The update() function never causes recursion.
See also update(), paintEvent(), updatesEnabled, and erase().
If showIt is TRUE, show() is called once the widget has been reparented.
If the new parent widget is in a different top-level widget, the reparented widget and its children are appended to the end of the tab chain of the new parent widget, in the same internal order as before. If one of the moved widgets had keyboard focus, reparent() calls clearFocus() for that widget.
If the new parent widget is in the same top-level widget as the old parent, reparent doesn't change the tab order or keyboard focus.
Warning: It is extremely unlikely that you will ever need this function. If you have a widget that changes its content dynamically, it is far easier to use QWidgetStack or QWizard.
See also getWFlags().
Example: toplevel/options.ui.h.
A convenience version of reparent that does not take widget flags as argument.
Calls reparent(parent, getWFlags() & ~WType_Mask, p, showIt).
This corresponds to resize( QSize(w, h) ).
The widget will be erased and receive a paint event immediately after processing the resize event. No drawing need be (or should be) done inside this handler.
Widgets that have been created with the WNoAutoErase flag will not be erased. Nevertheless, they will receive a paint event for their entire area afterwards. Again, no drawing needs to be done inside this handler.
The default implementation calls updateMask() if the widget has automatic masking enabled.
See also moveEvent(), event(), size, QResizeEvent, and paintEvent().
Examples:
Reimplemented in QFrame and QGLWidget.
After scrolling, scroll() sends a paint event for the the part that is read but not written. For example, when scrolling 10 pixels rightwards, the leftmost ten pixels of the widget need repainting. The paint event may be delivered immediately or later, depending on some heuristics (note that you might have to force processing of paint events using QApplication::sendPostedEvents() when using scroll() and move() in combination).
See also QScrollView, erase(), and bitBlt().
This version only scrolls r and does not move the children of the widget.
If r is empty or invalid, the result is undefined.
See also QScrollView, erase(), and bitBlt().
An active window is a visible top-level window that has the keyboard input focus.
This function performs the same operation as clicking the mouse on the title bar of a top-level window. On X11, the result depends on the Window Manager. If you want to ensure that the window is stacked on top as well you should also call raise(). Note that the window must be visible, otherwise setActiveWindow() has no effect.
On Windows, if you are calling this when the application is not currently the active one then it will not make it the active window. It will flash the task bar entry blue to indicate that the window has done something. This is because Microsoft do not allow an application to interrupt what the user is currently doing in another application.
See also isActiveWindow, topLevelWidget(), and show().
Sets the widget's own background mode to m and the visual background mode to visual. The visual background mode is used with the designable properties backgroundColor, foregroundColor and backgroundPixmap.
For complex controls, the logical background mode sometimes differs from a widget's own background mode. A spinbox for example has PaletteBackground as background mode (typically dark gray), while it's embedded lineedit control uses PaletteBase (typically white). Since the lineedit covers most of the visual area of a spinbox, it defines PaletteBase to be its visual background mode. Changing the backgroundColor property thus changes the lineedit control's background, which is exactly what the user expects in Qt Designer.
This corresponds to setBaseSize( QSize(basew, baseh) ). Sets the widgets base size to width basew and height baseh.
See the enabled documentation for more information.
See also isEnabledTo(), QKeyEvent, QMouseEvent, and enabledChange().
The erase color is the color the widget is to be cleared to before paintEvent() is called. If there is an erase pixmap (set using setErasePixmap()), then this property has an indeterminate value.
See also erasePixmap(), backgroundColor(), backgroundMode, and palette.
This pixmap is used to clear the widget before paintEvent() is called.
See also sizeHint, minimumSize, maximumSize, and setFixedSize().
See also maximumSize and minimumSize.
Sets the width of the widget to w and the height to h.
See also sizeHint, minimumSize, maximumSize, and setFixedSize().
First, a focus out event is sent to the focus widget (if any) to tell it that it is about to lose the focus. Then a focus in event is sent to this widget to tell it that it just received the focus. (Nothing happens if the focus in and focus out widgets are the same.)
setFocus() gives focus to a widget regardless of its focus policy, but does not clear any keyboard grab (see grabKeyboard()).
Be aware that if the widget is hidden, it will not accept focus.
Warning: If you call setFocus() in a function which may itself be called from focusOutEvent() or focusInEvent(), you may get an infinite recursion.
See also focus, clearFocus(), focusInEvent(), focusOutEvent(), focusPolicy, QApplication::focusWidget(), grabKeyboard(), and grabMouse().
Some widgets, such as QComboBox, can "have focus", but create a child widget to actually handle the focus. QComboBox, for example, creates a QLineEdit which handles the focus.
setFocusProxy() sets the widget which will actually get focus when" this widget" gets it. If there is a focus proxy, focusPolicy(), setFocusPolicy(), setFocus() and hasFocus() all operate on the focus proxy.
Reimplemented in QComboBox, QLabel, and QTabDialog.
Use setFont(const QFont& font) instead.
This corresponds to setGeometry( QRect(x, y, w, h) ).
Key compression is off by default (except for QLineEdit and QTextEdit), so widgets receive one key press event for each key press (or more, since autorepeat is usually on). If you turn it on and your program doesn't keep up with key input, Qt may try to compress key events so that more than one character can be processed in each event.
For example, a word processor widget might receive 2, 3 or more characters in each QKeyEvent::text(), if the layout recalculation takes too long for the CPU.
If a widget supports multiple character unicode input, it is always safe to turn the compression on.
Qt performs key event compression only for printable characters. Modifier keys, cursor movement keys, function keys and miscellaneous action keys (e.g. Escape, Enter, Backspace, PrintScreen) will stop key event compression, even if there are more compressible key events available.
Not all platforms support this compression, in which case turning it on will have no effect.
If the region includes pixels outside the rect() of the widget, window system controls in that area may or may not be visible, depending on the platform.
Note that this effect can be slow if the region is particularly complex.
See examples/tux for an example of masking for transparency.
Causes only the parts of the widget which overlap region to be visible. If the region includes pixels outside the rect() of the widget, window system controls in that area may or may not be visible, depending on the platform.
Note that this effect can be slow if the region is particularly complex.
This function corresponds to setMaximumSize( QSize(maxw, maxh) ). Sets the maximum width to maxw and the maximum height to maxh.
The text argument should be TRUE if this is a position for text input.
In the Windows version of Qt, this method sets the system caret, which is used for user Accessibility focus handling. If text is TRUE, it also sets the IME composition window in Far East Asian language input systems.
In the X11 version of Qt, if text is TRUE, this method sets the XIM "spot" point for complex language input handling.
The font f is a rendering hint to the currently active input method. If f is 0 the widget's font is used.
This function corresponds to setMinimumSize( QSize(minw, minh) ). Sets the minimum width to minw and the minimum height to minh.
Reimplemented in QComboBox, QScrollBar, and QSlider.
Use setPalette( const QPalette& p ) instead.
Sets the x (width) size increment to w and the y (height) size increment to h.
Sets the size policy of the widget to hor, ver and hfw (height for width).
See also QSizePolicy::QSizePolicy().
If no style is set, the widget uses the application's style, QApplication::style() instead.
Setting a widget's style has no effect on existing or future child widgets.
Warning: This function is particularly useful for demonstration purposes, where you want to show Qt's styling capabilities. Real applications should avoid it and use one consistent GUI style instead.
See also style(), QStyle, QApplication::style(), and QApplication::setStyle().
Sets the widget's GUI style to style using the QStyleFactory.
Note that since the tab order of the second widget is changed, you should order a chain like this:
setTabOrder( a, b ); // a to b
setTabOrder( b, c ); // a to b to c
setTabOrder( c, d ); // a to b to c to d
not like this:
setTabOrder( c, d ); // c to d WRONG
setTabOrder( a, b ); // a to b AND c to d
setTabOrder( b, c ); // a to b to c, but not c to d
If first or second has a focus proxy, setTabOrder() correctly substitutes the proxy.
See also focusPolicy and setFocusProxy().
Example: customlayout/main.cpp.
Widget flags are a combination of Qt::WidgetFlags.
See also testWFlags(), getWFlags(), and clearWFlags().
If the window is not visible (i.e. isVisible() returns FALSE), the window state will take effect when show() is called. For visible windows, the change is immediate. For example, to toggle between full-screen and mormal mode, use the following code:
w->setWindowState(w->windowState() ^ WindowFullScreen);
In order to restore and activate a minimized window (while preserving its maximized and/or full-screen state), use the following:
w->setWindowState(w->windowState() & ~WindowMinimized | WindowActive);
Note: On some window systems WindowActive is not immediate, and may be ignored in certain cases.
See also Qt::WindowState and windowState().
If its size or position has changed, Qt guarantees that a widget gets move and resize events just before it is shown.
You almost never have to reimplement this function. If you need to change some settings before a widget is shown, use showEvent() instead. If you need to do some delayed initialization use polish().
See also showEvent(), hide(), showMinimized(), showMaximized(), showNormal(), visible, and polish().
Examples:
Reimplemented in QDialog and QMenuBar.
Non-spontaneous show events are sent to widgets immediately before they are shown. The spontaneous show events of top-level widgets are delivered afterwards.
See also event() and QShowEvent.
Calling this function only affects top-level widgets.
To return from full-screen mode, call showNormal().
Full-screen mode works fine under Windows, but has certain problems under X. These problems are due to limitations of the ICCCM protocol that specifies the communication between X11 clients and the window manager. ICCCM simply does not understand the concept of non-decorated full-screen windows. Therefore, the best we can do is to request a borderless window and place and resize it to fill the entire screen. Depending on the window manager, this may or may not work. The borderless window is requested using MOTIF hints, which are at least partially supported by virtually all modern window managers.
An alternative would be to bypass the window manager entirely and create a window with the WX11BypassWM flag. This has other severe problems though, like totally broken keyboard focus and very strange effects on desktop changes or when the user raises other windows.
X11 window managers that follow modern post-ICCCM specifications support full-screen mode properly.
See also showNormal(), showMaximized(), show(), hide(), and visible.
Calling this function only affects top-level widgets.
On X11, this function may not work properly with certain window managers. See the Window Geometry documentation for an explanation.
See also setWindowState(), showNormal(), showMinimized(), show(), hide(), and visible.
Calling this function only affects top-level widgets.
See also showNormal(), showMaximized(), show(), hide(), visible, and minimized.
Calling this function only affects top-level widgets.
See also setWindowState(), showMinimized(), showMaximized(), show(), hide(), and visible.
To make this work, the widget itself and w must be siblings.
See also QWidget::setStyle(), QApplication::setStyle(), and QApplication::style().
Reimplement this function if your widget needs to know when its GUI style changes. You will almost certainly need to update the widget using update().
The default implementation updates the widget including its geometry.
See also QApplication::setStyle(), style(), update(), and updateGeometry().
If you reimplement this handler, it is very important that you ignore() the event if you do not handle it, so that the widget's parent can interpret it.
The default implementation ignores the event.
See also QTabletEvent::ignore(), QTabletEvent::accept(), event(), and QTabletEvent.
Widget flags are a combination of Qt::WidgetFlags.
If you want to test for the presence of multiple flags (or composite flags such as WStyle_Splash), test the return value for equality against the argument. For example:
int flags = WStyle_Tool | WStyle_NoBorder;
if ( testWFlags(flags) )
... // WStyle_Tool or WStyle_NoBorder or both are set
if ( testWFlags(flags) == flags )
... // both WStyle_Tool and WStyle_NoBorder are set
See also getWFlags(), setWFlags(), and clearWFlags().
If the widget is a top-level, the widget itself is returned.
Typical usage is changing the window caption:
aWidget->topLevelWidget()->setCaption( "New Caption" );
This function does not cause an immediate repaint; instead it schedules a paint event for processing when Qt returns to the main event loop. This permits Qt to optimize for more speed and less flicker than a call to repaint() does.
Calling update() several times normally results in just one paintEvent() call.
Qt normally erases the widget's area before the paintEvent() call. If the WRepaintNoErase widget flag is set, the widget is responsible for painting all its pixels itself.
See also repaint(), paintEvent(), updatesEnabled, erase(), and setWFlags().
Updates a rectangle (x, y, w, h) inside the widget unless updates are disabled or the widget is hidden.
This function does not cause an immediate repaint; instead it schedules a paint event for processing when Qt returns to the main event loop. This permits Qt to optimize for more speed and less flicker and a call to repaint() does.
Calling update() several times normally results in just one paintEvent() call.
If w is negative, it is replaced with width() - x. If h is negative, it is replaced width height() - y.
Qt normally erases the specified area before the paintEvent() call. If the WRepaintNoErase widget flag is set, the widget is responsible for painting all its pixels itself.
See also repaint(), paintEvent(), updatesEnabled, and erase().
Updates a rectangle r inside the widget unless updates are disabled or the widget is hidden.
This function does not cause an immediate repaint; instead it schedules a paint event for processing when Qt returns to the main event loop. This permits Qt to optimize for more speed and less flicker and a call to repaint() does.
Calling update() several times normally results in just one paintEvent() call.
Call this function if the sizeHint() or sizePolicy() have changed.
For explicitly hidden widgets, updateGeometry() is a no-op. The layout system will be notified as soon as the widget is shown.
See also autoMask, setMask(), and clearMask().
If you reimplement this handler, it is very important that you ignore() the event if you do not handle it, so that the widget's parent can interpret it.
The default implementation ignores the event.
See also QWheelEvent::ignore(), QWheelEvent::accept(), event(), and QWheelEvent.
In your reimplementation of this function, if you want to stop the event being handled by Qt, return TRUE. If you return FALSE, this native event is passed back to Qt, which translates the event into a Qt event and sends it to the widget.
Warning: This function is not portable.
See also QApplication::winEventFilter().
Portable in principle, but if you use it you are probably about to do something non-portable. Be careful.
Reimplement this function if your widget needs to know when its window becomes activated or deactivated.
The default implementation updates the visible part of the widget if the inactive and the active colorgroup are different for colors other than the highlight and link colors.
See also setActiveWindow(), isActiveWindow, update(), and palette.
See also Qt::WindowState and setWindowState().
In your reimplementation of this function, if you want to stop the event being handled by Qt, return TRUE. If you return FALSE, this native event is passed back to Qt, which translates the event into a Qt event and sends it to the widget.
Warning: This function is not portable.
See also QApplication::x11EventFilter().
Setting this property to TRUE announces to the system that this widget may be able to accept drop events.
If the widget is the desktop (QWidget::isDesktop()), this may fail if another application is using the desktop; you can call acceptDrops() to test if this occurs.
Warning: Do not modify this property in a Drag&Drop event handler.
Set this property's value with setAcceptDrops() and get this property's value with acceptDrops().
Transparent widgets use a mask to define their visible region. QWidget has some built-in support to make the task of recalculating the mask easier. When setting auto mask to TRUE, updateMask() will be called whenever the widget is resized or changes its focus state. Note that you must reimplement updateMask() (which should include a call to setMask()) or nothing will happen.
Note: when you re-implement resizeEvent(), focusInEvent() or focusOutEvent() in your custom widgets and still want to ensure that the auto mask calculation works, you should add:
if ( autoMask() )
updateMask();
at the end of your event handlers. This is true for all member functions that change the appearance of the widget in a way that requires a recalculation of the mask.
While being a technically appealing concept, masks have a big drawback: when using complex masks that cannot be expressed easily with relatively simple regions, they can be very slow on some window systems. The classic example is a transparent label. The complex shape of its contents makes it necessary to represent its mask by a bitmap, which consumes both memory and time. If all you want is to blend the background of several neighboring widgets together seamlessly, you will probably want to use setBackgroundOrigin() rather than a mask.
See also updateMask(), setMask(), clearMask(), and backgroundOrigin.
Set this property's value with setAutoMask() and get this property's value with autoMask().
The background brush depends on a widget's palette and its background mode.
See also backgroundColor(), backgroundPixmap(), eraseColor(), palette, and QApplication::setPalette().
Get this property's value with backgroundBrush().
setPaletteBackgroundColor() reads this property to determine which entry of the palette to set.
For most widgets the default suffices (PaletteBackground, typically gray), but some need to use PaletteBase (the background color for text output, typically white) or another role.
QListBox, which is "sunken" and uses the base color to contrast with its environment, does this in its constructor:
setBackgroundMode( PaletteBase );
You will never need to set the background mode of a built-in widget in Qt, but you might consider setting it in your custom widgets, so that setPaletteBackgroundColor() works as expected.
Note that two of the BackgroundMode values make no sense for setBackgroundMode(), namely FixedPixmap and FixedColor. You must call setBackgroundPixmap() and setPaletteBackgroundColor() instead.
Set this property's value with setBackgroundMode() and get this property's value with backgroundMode().
The origin is either WidgetOrigin (the default), ParentOrigin, WindowOrigin or AncestorOrigin.
This only makes a difference if the widget has a background pixmap, in which case positioning matters. Using WindowOrigin for several neighboring widgets makes the background blend together seamlessly. AncestorOrigin allows blending backgrounds seamlessly when an ancestor of the widget has an origin other than WindowOrigin.
See also backgroundPixmap() and backgroundMode.
Set this property's value with setBackgroundOrigin() and get this property's value with backgroundOrigin().
The base size is used to calculate a proper widget size if the widget defines sizeIncrement().
See also sizeIncrement.
Set this property's value with setBaseSize() and get this property's value with baseSize().
This property only makes sense for top-level widgets. If no caption has been set, the caption is QString::null.
See also icon and iconText.
Set this property's value with setCaption() and get this property's value with caption().
Hidden children are excluded.
See also childrenRegion and geometry.
Get this property's value with childrenRect().
Hidden children are excluded.
See also childrenRect and geometry.
Get this property's value with childrenRegion().
The color group is determined by the state of the widget. A disabled widget has the QPalette::disabled() color group, a widget with keyboard focus has the QPalette::active() color group, and an inactive widget has the QPalette::inactive() color group.
See also palette.
Get this property's value with colorGroup().
The mouse cursor will assume this shape when it's over this widget. See the list of predefined cursor objects for a range of useful shapes.
An editor widget might use an I-beam cursor:
setCursor( IbeamCursor );
If no cursor has been set, or after a call to unsetCursor(), the parent's cursor is used. The function unsetCursor() has no effect on top-level widgets.
See also QApplication::setOverrideCursor().
Set this property's value with setCursor(), get this property's value with cursor(), and reset this property's value with unsetCursor().
The default implementation of customWhatsThis() returns FALSE, which means the widget will not receive any events in Whats This mode.
The widget may leave What's This mode by calling QWhatsThis::leaveWhatsThisMode(), with or without actually displaying any help text.
You can also reimplement customWhatsThis() if your widget is a" passive interactor" supposed to work under all circumstances. Simply don't call QWhatsThis::leaveWhatsThisMode() in that case.
See also QWhatsThis::inWhatsThisMode() and QWhatsThis::leaveWhatsThisMode().
Get this property's value with customWhatsThis().
An enabled widget receives keyboard and mouse events; a disabled widget does not. In fact, an enabled widget only receives keyboard events when it is in focus.
Some widgets display themselves differently when they are disabled. For example a button might draw its label grayed out. If your widget needs to know when it becomes enabled or disabled, you can reimplement the enabledChange() function.
Disabling a widget implicitly disables all its children. Enabling respectively enables all child widgets unless they have been explicitly disabled.
See also enabled, isEnabledTo(), QKeyEvent, QMouseEvent, and enabledChange().
Set this property's value with setEnabled() and get this property's value with isEnabled().
Effectively equivalent to qApp->focusWidget() == this.
See also setFocus(), clearFocus(), focusPolicy, and QApplication::focusWidget().
Get this property's value with hasFocus().
Keyboard focus is initially disabled (i.e. focusPolicy() == QWidget::NoFocus).
You must enable keyboard focus for a widget if it processes keyboard events. This is normally done from the widget's constructor. For instance, the QLineEdit constructor calls setFocusPolicy(QWidget::StrongFocus).
See also focusPolicy, focusInEvent(), focusOutEvent(), keyPressEvent(), keyReleaseEvent(), and enabled.
Get this property's value with isFocusEnabled().
The policy is QWidget::TabFocus if the widget accepts keyboard focus by tabbing, QWidget::ClickFocus if the widget accepts focus by clicking, QWidget::StrongFocus if it accepts both, and QWidget::NoFocus (the default) if it does not accept focus at all.
You must enable keyboard focus for a widget if it processes keyboard events. This is normally done from the widget's constructor. For instance, the QLineEdit constructor calls setFocusPolicy(QWidget::StrongFocus).
See also focusEnabled, focusInEvent(), focusOutEvent(), keyPressEvent(), keyReleaseEvent(), and enabled.
Set this property's value with setFocusPolicy() and get this property's value with focusPolicy().
The fontInfo() function reports the actual font that is being used by the widget.
As long as no special font has been set, or after unsetFont() is called, this is either a special font for the widget class, the parent's font or (if this widget is a top level widget), the default application font.
This code fragment sets a 12 point helvetica bold font:
QFont f( "Helvetica", 12, QFont::Bold );
setFont( f );
In addition to setting the font, setFont() informs all children about the change.
See also fontChange(), fontInfo(), fontMetrics(), and ownFont.
Set this property's value with setFont(), get this property's value with font(), and reset this property's value with unsetFont().
See the Window Geometry documentation for an overview of geometry issues with top-level widgets.
See also geometry, x, y, and pos.
Get this property's value with frameGeometry().
Get this property's value with frameSize().
Get this property's value with isFullScreen().
See also windowState(), minimized, and maximized.
When changing the geometry, the widget, if visible, receives a move event (moveEvent()) and/or a resize event (resizeEvent()) immediately. If the widget is not currently visible, it is guaranteed to receive appropriate events before it is shown.
The size component is adjusted if it lies outside the range defined by minimumSize() and maximumSize().
setGeometry() is virtual, and all other overloaded setGeometry() implementations in Qt call it.
Warning: Calling setGeometry() inside resizeEvent() or moveEvent() can lead to infinite recursion.
See the Window Geometry documentation for an overview of top-level widget geometry.
See also frameGeometry, rect, pos, size, moveEvent(), resizeEvent(), minimumSize, and maximumSize.
Set this property's value with setGeometry() and get this property's value with geometry().
See the Window Geometry documentation for an overview of top-level widget geometry.
See also geometry, width, and size.
Get this property's value with height().
If FALSE, the widget is visible or would become visible if all its ancestors became visible.
See also hide(), show(), visible, isVisibleTo(), and shown.
Set this property's value with setHidden() and get this property's value with isHidden().
This property only makes sense for top-level widgets. If no icon has been set, icon() returns 0.
See also iconText, caption, and Setting the Application Icon.
Set this property's value with setIcon() and get this property's value with icon().
This property only makes sense for top-level widgets. If no icon text has been set, this functions returns QString::null.
See also icon and caption.
Set this property's value with setIconText() and get this property's value with iconText().
Most Widgets (as eg. buttons) that do not handle text input should have the input method disabled if they have focus. This is the default.
If a widget handles text input it should set this property to TRUE.
Set this property's value with setInputMethodEnabled() and get this property's value with isInputMethodEnabled().
The active window is the window that contains the widget that has keyboard focus.
When popup windows are visible, this property is TRUE for both the active window and for the popup.
See also setActiveWindow() and QApplication::activeWindow().
Get this property's value with isActiveWindow().
A desktop widget is also a top-level widget.
See also isTopLevel and QApplication::desktop().
Get this property's value with isDesktop().
A dialog widget is a secondary top-level widget, i.e. a top-level widget with a parent.
See also isTopLevel and QDialog.
Get this property's value with isDialog().
This property only makes sense for top-level widgets. A modal widget prevents widgets in all other top-level widgets from getting any input.
See also isTopLevel, isDialog, and QDialog.
Get this property's value with isModal().
A popup widget is created by specifying the widget flag WType_Popup to the widget constructor. A popup widget is also a top-level widget.
See also isTopLevel.
Get this property's value with isPopup().
A top-level widget is a widget which usually has a frame and a caption (title). Popup and desktop widgets are also top-level widgets.
A top-level widget can have a parent widget. It will then be grouped with its parent and deleted when the parent is deleted, minimized when the parent is minimized etc. If supported by the window manager, it will also have a common taskbar entry with its parent.
QDialog and QMainWindow widgets are by default top-level, even if a parent widget is specified in the constructor. This behavior is specified by the WType_TopLevel widget flag.
See also topLevelWidget(), isDialog, isModal, isPopup, isDesktop, and parentWidget().
Get this property's value with isTopLevel().
This property is only relevant for top-level widgets.
Note that due to limitations in some window-systems, this does not always report the expected results (e.g. if the user on X11 maximizes the window via the window manager, Qt has no way of distinguishing this from any other resize). This is expected to improve as window manager protocols evolve.
See also windowState(), showMaximized(), visible, show(), hide(), showNormal(), and minimized.
Get this property's value with isMaximized().
This property corresponds to maximumSize().height().
See also maximumSize and maximumWidth.
Set this property's value with setMaximumHeight() and get this property's value with maximumHeight().
The widget cannot be resized to a larger size than the maximum widget size.
See also maximumWidth, maximumHeight, maximumSize, minimumSize, and sizeIncrement.
Set this property's value with setMaximumSize() and get this property's value with maximumSize().
This property corresponds to maximumSize().width().
See also maximumSize and maximumHeight.
Set this property's value with setMaximumWidth() and get this property's value with maximumWidth().
See the documentation of setMicroFocusHint() for more information.
Get this property's value with microFocusHint().
This property is only relevant for top-level widgets.
See also showMinimized(), visible, show(), hide(), showNormal(), and maximized.
Get this property's value with isMinimized().
This property corresponds to minimumSize().height().
See also minimumSize and minimumWidth.
Set this property's value with setMinimumHeight() and get this property's value with minimumHeight().
The widget cannot be resized to a smaller size than the minimum widget size. The widget's size is forced to the minimum size if the current size is smaller.
If you use a layout inside the widget, the minimum size will be set by the layout and not by setMinimumSize(), unless you set the layout's resize mode to QLayout::FreeResize.
See also minimumWidth, minimumHeight, maximumSize, sizeIncrement, and QLayout::resizeMode.
Set this property's value with setMinimumSize() and get this property's value with minimumSize().
If the value of this property is an invalid size, no minimum size is recommended.
The default implementation of minimumSizeHint() returns an invalid size if there is no layout for this widget, and returns the layout's minimum size otherwise. Most built-in widgets reimplement minimumSizeHint().
QLayout will never resize a widget to a size smaller than minimumSizeHint.
See also QSize::isValid(), size, minimumSize, and sizePolicy.
Get this property's value with minimumSizeHint().
This property corresponds to minimumSize().width().
See also minimumSize and minimumHeight.
Set this property's value with setMinimumWidth() and get this property's value with minimumWidth().
If mouse tracking is disabled (the default), the widget only receives mouse move events when at least one mouse button is pressed while the mouse is being moved.
If mouse tracking is enabled, the widget receives mouse move events even if no buttons are pressed.
See also mouseMoveEvent() and QApplication::setGlobalMouseTracking().
Set this property's value with setMouseTracking() and get this property's value with hasMouseTracking().
If FALSE, the widget uses its parent widget's cursor.
See also cursor.
Get this property's value with ownCursor().
If FALSE, the widget uses its parent widget's font.
See also font.
Get this property's value with ownFont().
If FALSE, the widget uses its parent widget's palette.
See also palette.
Get this property's value with ownPalette().
As long as no special palette has been set, or after unsetPalette() has been called, this is either a special palette for the widget class, the parent's palette or (if this widget is a top level widget), the default application palette.
Instead of defining an entirely new palette, you can also use the paletteBackgroundColor, paletteBackgroundPixmap and paletteForegroundColor convenience properties to change a widget's background and foreground appearance only.
See also ownPalette, colorGroup, and QApplication::palette().
Set this property's value with setPalette(), get this property's value with palette(), and reset this property's value with unsetPalette().
The palette background color is usually set implicitly by setBackgroundMode(), although it can also be set explicitly by setPaletteBackgroundColor(). setPaletteBackgroundColor() is a convenience function that creates and sets a modified QPalette with setPalette(). The palette is modified according to the widget's background mode. For example, if the background mode is PaletteButton the color used for the palette's QColorGroup::Button color entry is set.
If there is a background pixmap (set using setPaletteBackgroundPixmap()), then the return value of this function is indeterminate.
See also paletteBackgroundPixmap, paletteForegroundColor, palette, and colorGroup.
Set this property's value with setPaletteBackgroundColor(), get this property's value with paletteBackgroundColor(), and reset this property's value with unsetPalette().
The palette background pixmap is usually set implicitly by setBackgroundMode(), although it can also be set explicitly by setPaletteBackgroundPixmap(). setPaletteBackgroundPixmap() is a convenience function that creates and sets a modified QPalette with setPalette(). The palette is modified according to the widget's background mode. For example, if the background mode is PaletteButton the pixmap used for the palette's QColorGroup::Button color entry is set.
If there is a plain background color (set using setPaletteBackgroundColor()), then this function returns 0.
See also paletteBackgroundColor, paletteForegroundColor, palette, and colorGroup.
Set this property's value with setPaletteBackgroundPixmap(), get this property's value with paletteBackgroundPixmap(), and reset this property's value with unsetPalette().
setPaletteForegroundColor() is a convenience function that creates and sets a modified QPalette with setPalette(). The palette is modified according to the widget's background mode. For example, if the background mode is PaletteButton the palette entry QColorGroup::ButtonText is set to color.
See also palette, QApplication::setPalette(), backgroundMode, foregroundColor(), backgroundMode, and setEraseColor().
Set this property's value with setPaletteForegroundColor(), get this property's value with paletteForegroundColor(), and reset this property's value with unsetPalette().
If the widget is a top-level widget, the position is that of the widget on the desktop, including its frame.
When changing the position, the widget, if visible, receives a move event (moveEvent()) immediately. If the widget is not currently visible, it is guaranteed to receive an event before it is shown.
move() is virtual, and all other overloaded move() implementations in Qt call it.
Warning: Calling move() or setGeometry() inside moveEvent() can lead to infinite recursion.
See the Window Geometry documentation for an overview of top-level widget geometry.
See also frameGeometry, size, x, and y.
Set this property's value with move() and get this property's value with pos().
The rect property equals QRect(0, 0, width(), height()).
See the Window Geometry documentation for an overview of top-level widget geometry.
See also size.
Get this property's value with rect().
If TRUE, the widget is visible or would become visible if all its ancestors became visible.
See also hide(), show(), visible, isVisibleTo(), and hidden.
Set this property's value with setShown() and get this property's value with isShown().
When resizing, the widget, if visible, receives a resize event (resizeEvent()) immediately. If the widget is not currently visible, it is guaranteed to receive an event before it is shown.
The size is adjusted if it lies outside the range defined by minimumSize() and maximumSize(). Furthermore, the size is always at least QSize(1, 1). For toplevel widgets, the minimum size might be larger, depending on the window manager.
If you want a top-level window to have a fixed size, call setResizeMode( QLayout::FreeResize ) on its layout.
resize() is virtual, and all other overloaded resize() implementations in Qt call it.
Warning: Calling resize() or setGeometry() inside resizeEvent() can lead to infinite recursion.
See also pos, geometry, minimumSize, maximumSize, and resizeEvent().
Set this property's value with resize() and get this property's value with size().
If the value of this property is an invalid size, no size is recommended.
The default implementation of sizeHint() returns an invalid size if there is no layout for this widget, and returns the layout's preferred size otherwise.
See also QSize::isValid(), minimumSizeHint, sizePolicy, minimumSize, and updateGeometry().
Get this property's value with sizeHint().
When the user resizes the window, the size will move in steps of sizeIncrement().width() pixels horizontally and sizeIncrement.height() pixels vertically, with baseSize() as the basis. Preferred widget sizes are for non-negative integers i and j:
width = baseSize().width() + i * sizeIncrement().width();
height = baseSize().height() + j * sizeIncrement().height();
Note that while you can set the size increment for all widgets, it only affects top-level widgets.
Warning: The size increment has no effect under Windows, and may be disregarded by the window manager on X.
See also size, minimumSize, and maximumSize.
Set this property's value with setSizeIncrement() and get this property's value with sizeIncrement().
If there is a QLayout that manages this widget's children, the size policy specified by that layout is used. If there is no such QLayout, the result of this function is used.
The default policy is Preferred/Preferred, which means that the widget can be freely resized, but prefers to be the size sizeHint() returns. Button-like widgets set the size policy to specify that they may stretch horizontally, but are fixed vertically. The same applies to lineedit controls (such as QLineEdit, QSpinBox or an editable QComboBox) and other horizontally orientated widgets (such as QProgressBar). QToolButton's are normally square, so they allow growth in both directions. Widgets that support different directions (such as QSlider, QScrollBar or QHeader) specify stretching in the respective direction only. Widgets that can provide scrollbars (usually subclasses of QScrollView) tend to specify that they can use additional space, and that they can make do with less than sizeHint().
See also sizeHint, QLayout, QSizePolicy, and updateGeometry().
Set this property's value with setSizePolicy() and get this property's value with sizePolicy().
This value is not updated properly during drag and drop operations.
See also QEvent::Enter and QEvent::Leave.
Get this property's value with hasMouse().
Calling update() and repaint() has no effect if updates are disabled. Paint events from the window system are processed normally even if updates are disabled.
setUpdatesEnabled() is normally used to disable updates for a short period of time, for instance to avoid screen flicker during large changes.
Example:
setUpdatesEnabled( FALSE );
bigVisualChanges();
setUpdatesEnabled( TRUE );
repaint();
See also update(), repaint(), and paintEvent().
Set this property's value with setUpdatesEnabled() and get this property's value with isUpdatesEnabled().
Calling show() sets the widget to visible status if all its parent widgets up to the top-level widget are visible. If an ancestor is not visible, the widget won't become visible until all its ancestors are shown.
Calling hide() hides a widget explicitly. An explicitly hidden widget will never become visible, even if all its ancestors become visible, unless you show it.
A widget receives show and hide events when its visibility status changes. Between a hide and a show event, there is no need to waste CPU cycles preparing or displaying information to the user. A video application, for example, might simply stop generating new frames.
A widget that happens to be obscured by other windows on the screen is considered to be visible. The same applies to iconified top-level widgets and windows that exist on another virtual desktop (on platforms that support this concept). A widget receives spontaneous show and hide events when its mapping status is changed by the window system, e.g. a spontaneous hide event when the user minimizes the window, and a spontaneous show event when the window is restored again.
See also show(), hide(), hidden, isVisibleTo(), minimized, showEvent(), and hideEvent().
Get this property's value with isVisible().
This property is obsolete. It is provided to keep old source working. We strongly advise against using it in new code.
No longer necessary, you can simply call repaint(). If you do not need the rectangle for repaint(), use clipRegion() instead.
Get this property's value with visibleRect().
See the Window Geometry documentation for an overview of top-level widget geometry.
See also geometry, height, and size.
Get this property's value with width().
The valid range of opacity is from 1.0 (completely opaque) to 0.0 (completely transparent).
By default the value of this property is 1.0.
This feature is only present on Mac OS X and Windows 2000 and up.
Warning: Changing this property from opaque to transparent might issue a paint event that needs to be processed before the window is displayed correctly. This affects mainly the use of QPixmap::grabWindow(). Also note that semi-transparent windows update and resize significantely slower than opaque windows.
Set this property's value with setWindowOpacity() and get this property's value with windowOpacity().
See the Window Geometry documentation for an overview of top-level widget geometry.
See also frameGeometry, y, and pos.
Get this property's value with x().
See the Window Geometry documentation for an overview of top-level widget geometry.
See also frameGeometry, x, and pos.
Get this property's value with y().