/****************************************************************************
* *
* * Implementation of QStyle class
* *
* * Created : 981231
* *
* * Copyright ( C ) 1998 - 2008 Trolltech ASA . All rights reserved .
* *
* * This file is part of the kernel module of the Qt GUI Toolkit .
* *
* * This file may be used under the terms of the GNU General
* * Public License versions 2.0 or 3.0 as published by the Free
* * Software Foundation and appearing in the files LICENSE . GPL2
* * and LICENSE . GPL3 included in the packaging of this file .
* * Alternatively you may ( at your option ) use any later version
* * of the GNU General Public License if such license has been
* * publicly approved by Trolltech ASA ( or its successors , if any )
* * and the KDE Free Qt Foundation .
* *
* * Please review the following information to ensure GNU General
* * Public Licensing requirements will be met :
* * http : //trolltech.com/products/qt/licenses/licensing/opensource/.
* * If you are unsure which license is appropriate for your use , please
* * review the following information :
* * http : //trolltech.com/products/qt/licenses/licensing/licensingoverview
* * or contact the sales department at sales @ trolltech . com .
* *
* * This file may be used under the terms of the Q Public License as
* * defined by Trolltech ASA and appearing in the file LICENSE . QPL
* * included in the packaging of this file . Licensees holding valid Qt
* * Commercial licenses may use this file in accordance with the Qt
* * Commercial License Agreement provided with the Software .
* *
* * This file is provided " AS IS " with NO WARRANTY OF ANY KIND ,
* * INCLUDING THE WARRANTIES OF DESIGN , MERCHANTABILITY AND FITNESS FOR
* * A PARTICULAR PURPOSE . Trolltech reserves all rights not granted
* * herein .
* *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
# include "qstyle.h"
# ifndef QT_NO_STYLE
# include "qapplication.h"
# include "qpainter.h"
# include "qbitmap.h"
# include "qpixmapcache.h"
# include "qframe.h"
# include "qlayout.h"
# include "qlistview.h"
# include "qpopupmenu.h"
# include "qobjectlist.h"
# include "qwidgetlist.h"
# include <limits.h>
class QStylePrivate
{
public :
QStylePrivate ( )
{
}
} ;
/*!
\ class QStyleOption qstyle . h
\ brief The QStyleOption class specifies optional parameters for QStyle functions .
\ ingroup appearance
Some QStyle functions take an optional argument specifying extra
information that is required for a paritical primitive or control .
So that the QStyle class can be extended , QStyleOption is used to
provide a variable - argument for these options .
The QStyleOption class has constructors for each type of optional
argument , and this set of constructors may be extended in future
Qt releases . There are also corresponding access functions that
return the optional arguments : these too may be extended .
For each constructor , you should refer to the documentation of the
QStyle functions to see the meaning of the arguments .
When calling QStyle functions from your own widgets , you must only
pass the default QStyleOption or the argument that QStyle is
documented to accept . For example , if the function expects
QStyleOption ( QMenuItem * , int ) , passing QStyleOption ( QMenuItem * )
leaves the optional integer argument uninitialized .
When subclassing QStyle , you must similarly only expect the
default or documented arguments . The other arguments will have
uninitialized values .
If you make your own QStyle subclasses and your own widgets , you
can make a subclass of QStyleOption to pass additional arguments
to your QStyle subclass . You will need to cast the " const
QStyleOption & " argument to your subclass, so be sure your style
has been called from your widget .
*/
/*!
\ enum QStyleOption : : StyleOptionDefault
This enum value can be passed as the optional argument to any
QStyle function .
\ value Default
*/
/*!
\ fn QStyleOption : : QStyleOption ( StyleOptionDefault )
The default option . This can always be passed as the optional
argument to QStyle functions .
*/
/*!
\ fn QStyleOption : : QStyleOption ( int )
Pass one integer , \ a in1 . For example , headerSection .
*/
/*!
\ fn QStyleOption : : QStyleOption ( int , int )
Pass two integers , \ a in1 and \ a in2 . For example , linewidth and
midlinewidth .
*/
/*!
\ fn QStyleOption : : QStyleOption ( int , int , int , int )
Pass four integers , \ a in1 , \ a in2 , \ a in3 and \ a in4 .
*/
/*!
\ fn QStyleOption : : QStyleOption ( QMenuItem * )
Pass a menu item , \ a m .
*/
/*!
\ fn QStyleOption : : QStyleOption ( QMenuItem * , int )
Pass a menu item and an integer , \ a m and \ a in1 .
*/
/*!
\ fn QStyleOption : : QStyleOption ( QMenuItem * , int , int )
Pass a menu item and two integers , \ a m , \ a in1 and \ a in2 .
*/
/*!
\ fn QStyleOption : : QStyleOption ( const QColor & )
Pass a color , \ a c .
*/
/*!
\ fn QStyleOption : : QStyleOption ( QTab * )
Pass a QTab , \ a t .
*/
/*!
\ fn QStyleOption : : QStyleOption ( QListViewItem * )
Pass a QListViewItem , \ a i .
*/
/*!
\ fn QStyleOption : : QStyleOption ( Qt : : ArrowType )
Pass an Qt : : ArrowType , \ a a .
*/
/*!
\ fn QStyleOption : : QStyleOption ( QCheckListItem * i )
Pass a QCheckListItem , \ a i .
*/
/*!
\ fn QStyleOption : : QStyleOption ( const QRect & r )
Pass a QRect , \ a r .
*/
/*!
\ fn QStyleOption : : QStyleOption ( QWidget * w )
Pass a QWidget , \ a w .
*/
/*!
\ fn bool QStyleOption : : isDefault ( ) const
Returns TRUE if the option was constructed with the default
constructor ; otherwise returns FALSE .
*/
/*!
\ fn int QStyleOption : : day ( ) const
Returns the index of the day in the month if the appropriate
constructor was called ; otherwise the return value is undefined .
*/
/*!
\ fn int QStyleOption : : lineWidth ( ) const
Returns the line width if the appropriate constructor was called ;
otherwise the return value is undefined .
*/
/*!
\ fn int QStyleOption : : midLineWidth ( ) const
Returns the mid - line width if the appropriate constructor was
called ; otherwise the return value is undefined .
*/
/*!
\ fn int QStyleOption : : frameShape ( ) const
Returns a QFrame : : Shape value if the appropriate constructor was
called ; otherwise the return value is undefined .
*/
/*!
\ fn int QStyleOption : : frameShadow ( ) const
Returns a QFrame : : Shadow value if the appropriate constructor was
called ; otherwise the return value is undefined .
*/
/*!
\ fn QMenuItem * QStyleOption : : menuItem ( ) const
Returns a menu item if the appropriate constructor was called ;
otherwise the return value is undefined .
*/
/*!
\ fn int QStyleOption : : maxIconWidth ( ) const
Returns the maximum width of the menu item check area if the
appropriate constructor was called ; otherwise the return value is
undefined .
*/
/*!
\ fn int QStyleOption : : tabWidth ( ) const
Returns the tab indent width if the appropriate constructor was
called ; otherwise the return value is undefined .
*/
/*!
\ fn int QStyleOption : : headerSection ( ) const
Returns the header section if the appropriate constructor was
called ; otherwise the return value is undefined .
*/
/*!
\ fn const QColor & QStyleOption : : color ( ) const
Returns a color if the appropriate constructor was called ;
otherwise the return value is undefined .
*/
/*!
\ fn QTab * QStyleOption : : tab ( ) const
Returns a QTabBar tab if the appropriate constructor was called ;
otherwise the return value is undefined .
*/
/*!
\ fn QListViewItem * QStyleOption : : listViewItem ( ) const
Returns a QListView item if the appropriate constructor was
called ; otherwise the return value is undefined .
*/
/*!
\ fn Qt : : ArrowType QStyleOption : : arrowType ( ) const
Returns an arrow type if the appropriate constructor was called ;
otherwise the return value is undefined .
*/
/*!
\ fn QCheckListItem * QStyleOption : : checkListItem ( ) const
Returns a check list item if the appropriate constructor was
called ; otherwise the return value is undefined .
*/
/*!
\ fn QRect QStyleOption : : rect ( ) const
Returns a rectangle if the appropriate constructor was called ;
otherwise the return value is undefined .
*/
/*!
\ fn QWidget * QStyleOption : : widget ( ) const
Returns a pointer to a widget if the appropriate constructor was called ;
otherwise the return value is undefined .
*/
/*!
\ class QStyle qstyle . h
\ brief The QStyle class specifies the look and feel of a GUI .
\ ingroup appearance
A large number of GUI elements are common to many widgets . The
QStyle class allows the look of these elements to be modified
across all widgets that use the QStyle functions . It also
provides two feel options : Motif and Windows .
Although it is not possible to fully enumerate the look of
graphical elements and the feel of widgets in a GUI , QStyle
provides a considerable amount of control and customisability .
In Qt 1. x the look and feel option for widgets was specified by a
single value : the GUIStyle . Starting with Qt 2.0 , this notion was
expanded to allow the look to be specified by virtual drawing
functions .
Derived classes may reimplement some or all of the drawing
functions to modify the look of all widgets that use those
functions .
Languages written from right to left ( such as Arabic and Hebrew )
usually also mirror the whole layout of widgets . If you design a
style , you should take special care when drawing asymmetric
elements to make sure that they also look correct in a mirrored
layout . You can start your application with \ c - reverse to check
the mirrored layout . Also notice , that for a reversed layout , the
light usually comes from top right instead of top left .
The actual reverse layout is performed automatically when
possible . However , for the sake of flexibility , the translation
cannot be performed everywhere . The documentation for each
function in the QStyle API states whether the function
expects / returns logical or screen coordinates . Using logical
coordinates ( in ComplexControls , for example ) provides great
flexibility in controlling the look of a widget . Use visualRect ( )
when necessary to translate logical coordinates into screen
coordinates for drawing .
In Qt versions prior to 3.0 , if you wanted a low level route into
changing the appearance of a widget , you would reimplement
polish ( ) . With the new 3.0 style engine the recommended approach
is to reimplement the draw functions , for example drawItem ( ) ,
drawPrimitive ( ) , drawControl ( ) , drawControlMask ( ) ,
drawComplexControl ( ) and drawComplexControlMask ( ) . Each of these
functions is called with a range of parameters that provide
information that you can use to determine how to draw them , e . g .
style flags , rectangle , color group , etc .
For information on changing elements of an existing style or
creating your own style see the \ link customstyles . html Style
overview \ endlink .
Styles can also be created as \ link plugins - howto . html
plugins \ endlink .
*/
/*!
\ enum Qt : : GUIStyle
\ obsolete
\ value WindowsStyle
\ value MotifStyle
\ value MacStyle
\ value Win3Style
\ value PMStyle
*/
/*!
\ enum Qt : : UIEffect
\ value UI_General
\ value UI_AnimateMenu
\ value UI_FadeMenu
\ value UI_AnimateCombo
\ value UI_AnimateTooltip
\ value UI_FadeTooltip
\ value UI_AnimateToolBox Reserved
*/
/*!
Constructs a QStyle .
*/
QStyle : : QStyle ( )
{
m_eventHandlerInstallationHook = NULL ;
m_eventHandlerRemovalHook = NULL ;
m_widgetActionRequestHook = NULL ;
conditionalAcceleratorsEnabled = false ;
d = new QStylePrivate ;
}
/*!
Destroys the style and frees all allocated resources .
*/
QStyle : : ~ QStyle ( )
{
delete d ;
d = 0 ;
}
/*
\ fn GUIStyle QStyle : : guiStyle ( ) const
\ obsolete
Returns an indicator to the additional " feel " component of a
style . Current supported values are Qt : : WindowsStyle and Qt : : MotifStyle .
*/
/*!
Initializes the appearance of a widget .
This function is called for every widget at some point after it
has been fully created but just \ e before it is shown the very
first time .
Reasonable actions in this function might be to call
QWidget : : setBackgroundMode ( ) for the widget . An example of highly
unreasonable use would be setting the geometry ! Reimplementing
this function gives you a back - door through which you can change
the appearance of a widget . With Qt 3.0 ' s style engine you will
rarely need to write your own polish ( ) ; instead reimplement
drawItem ( ) , drawPrimitive ( ) , etc .
The QWidget : : inherits ( ) function may provide enough information to
allow class - specific customizations . But be careful not to
hard - code things too much because new QStyle subclasses are
expected to work reasonably with all current and \ e future
widgets .
\ sa unPolish ( )
*/
void QStyle : : polish ( QWidget * widget ) {
QStyleControlElementData ceData = populateControlElementDataFromWidget ( widget , QStyleOption ( ) ) ;
polish ( ceData , getControlElementFlagsForObject ( widget , ceData . widgetObjectTypes , QStyleOption ( ) ) , widget ) ;
}
/*!
Undoes the initialization of a widget ' s appearance .
This function is the counterpart to polish . It is called for every
polished widget when the style is dynamically changed . The former
style has to unpolish its settings before the new style can polish
them again .
\ sa polish ( )
*/
void QStyle : : unPolish ( QWidget * widget ) {
QStyleControlElementData ceData = populateControlElementDataFromWidget ( widget , QStyleOption ( ) ) ;
unPolish ( ceData , getControlElementFlagsForObject ( widget , ceData . widgetObjectTypes , QStyleOption ( ) ) , widget ) ;
}
/*!
Initializes the appearance of a widget .
This function is called for every widget at some point after it
has been fully created but just \ e before it is shown the very
first time .
Reasonable actions in this function might be to install a widget
event handler for the style . An example of highly unreasonable
use would be setting the geometry ! With Qt 3.0 ' s style engine
you will rarely need to write your own polish ( ) ; instead reimplement
drawItem ( ) , drawPrimitive ( ) , etc .
The \ a objectTypes object may provide enough information to
allow class - specific customizations . But be careful not to
hard - code things too much because new QStyle subclasses are
expected to work reasonably with all current and \ e future
widgets .
You may specify either a QWidget pointer or a custom pointer .
If a custom pointer is specified , you must be careful to intercept any event
handler installation / removal calls via setEventHandlerInstallationHook and
setEventHandlerRemovalHook .
\ sa unPolish ( )
*/
void QStyle : : polish ( QStyleControlElementData ceData , ControlElementFlags , void * ptr ) {
if ( ceData . widgetObjectTypes . contains ( " QWidget " ) ) {
// Enable dynamic hide/show of accelerator shortcuts
QWidget * widget = reinterpret_cast < QWidget * > ( ptr ) ;
widget - > installEventFilter ( this ) ;
}
}
/*!
Undoes the initialization of a widget ' s appearance .
This function is the counterpart to polish . It is called for every
polished widget when the style is dynamically changed . The former
style has to unpolish its settings before the new style can polish
them again .
\ sa polish ( )
*/
void QStyle : : unPolish ( QStyleControlElementData ceData , ControlElementFlags , void * ptr ) {
if ( ceData . widgetObjectTypes . contains ( " QWidget " ) ) {
// Disable dynamic hide/show of accelerator shortcuts
QWidget * widget = reinterpret_cast < QWidget * > ( ptr ) ;
widget - > installEventFilter ( this ) ;
}
}
/*!
\ overload
Late initialization of the QApplication object .
\ sa unPolish ( )
*/
void QStyle : : polish ( QApplication * app ) {
QStyleControlElementData ceData ;
ceData . widgetObjectTypes = getObjectTypeListForObject ( app ) ;
applicationPolish ( ceData , getControlElementFlagsForObject ( app , ceData . widgetObjectTypes , QStyleOption ( ) ) , app ) ;
}
/*!
\ overload
Undoes the application polish .
\ sa polish ( )
*/
void QStyle : : unPolish ( QApplication * app ) {
QStyleControlElementData ceData ;
ceData . widgetObjectTypes = getObjectTypeListForObject ( app ) ;
applicationUnPolish ( ceData , getControlElementFlagsForObject ( app , ceData . widgetObjectTypes , QStyleOption ( ) ) , app ) ;
}
/*!
\ overload
Late initialization of the QApplication object or other global application object .
You may specify either a QApplication pointer or a custom pointer .
If a custom pointer is specified , you must be careful to intercept any event
handler installation / removal calls via setEventHandlerInstallationHook and
setEventHandlerRemovalHook .
\ sa unPolish ( )
*/
void QStyle : : applicationPolish ( QStyleControlElementData , ControlElementFlags , void * ) {
//
}
/*!
\ overload
Undoes the application polish .
You may specify either a QApplication pointer or a custom pointer .
If a custom pointer is specified , you must be careful to intercept any event
handler installation / removal calls via setEventHandlerInstallationHook and
setEventHandlerRemovalHook .
\ sa polish ( )
*/
void QStyle : : applicationUnPolish ( QStyleControlElementData , ControlElementFlags , void * ) {
//
}
/*!
\ overload
The style may have certain requirements for color palettes . In
this function it has the chance to change the palette according to
these requirements .
\ sa QPalette , QApplication : : setPalette ( )
*/
void QStyle : : polish ( QPalette & )
{
}
/*!
Polishes the popup menu according to the GUI style . This usually
means setting the mouse tracking
( \ l { QPopupMenu : : setMouseTracking ( ) } ) and whether the menu is
checkable by default ( \ l { QPopupMenu : : setCheckable ( ) } ) .
*/
void QStyle : : polishPopupMenu ( QPopupMenu * pm ) {
QStyleControlElementData ceData = populateControlElementDataFromWidget ( pm , QStyleOption ( ) ) ;
unPolish ( ceData , getControlElementFlagsForObject ( pm , ceData . widgetObjectTypes , QStyleOption ( ) ) , pm ) ;
}
/*!
Polishes the popup menu according to the GUI style . This usually
means setting the mouse tracking
( \ l { QPopupMenu : : setMouseTracking ( ) } ) and whether the menu is
checkable by default ( \ l { QPopupMenu : : setCheckable ( ) } ) .
*/
void QStyle : : polishPopupMenu ( QStyleControlElementData , ControlElementFlags , void * )
{
}
/*!
Returns the appropriate area ( see below ) within rectangle \ a r in
which to draw the \ a text or \ a pixmap using painter \ a p . If \ a
len is - 1 ( the default ) all the \ a text is drawn ; otherwise only
the first \ a len characters of \ a text are drawn . The text is
aligned in accordance with the alignment \ a flags ( see
\ l { Qt : : AlignmentFlags } ) . The \ a enabled bool indicates whether or
not the item is enabled .
If \ a r is larger than the area needed to render the \ a text the
rectangle that is returned will be offset within \ a r in
accordance with the alignment \ a flags . For example if \ a flags is
\ c AlignCenter the returned rectangle will be centered within \ a
r . If \ a r is smaller than the area needed the rectangle that is
returned will be \ e larger than \ a r ( the smallest rectangle large
enough to render the \ a text or \ a pixmap ) .
By default , if both the text and the pixmap are not null , the
pixmap is drawn and the text is ignored .
*/
QRect QStyle : : itemRect ( QPainter * p , const QRect & r ,
int flags , bool enabled , const QPixmap * pixmap ,
const QString & text , int len ) const
{
QRect result ;
int x = r . x ( ) ;
int y = r . y ( ) ;
int w = r . width ( ) ;
int h = r . height ( ) ;
GUIStyle gs = ( GUIStyle ) styleHint ( SH_GUIStyle ) ;
if ( pixmap ) {
if ( ( flags & Qt : : AlignVCenter ) = = Qt : : AlignVCenter )
y + = h / 2 - pixmap - > height ( ) / 2 ;
else if ( ( flags & Qt : : AlignBottom ) = = Qt : : AlignBottom )
y + = h - pixmap - > height ( ) ;
if ( ( flags & Qt : : AlignRight ) = = Qt : : AlignRight )
x + = w - pixmap - > width ( ) ;
else if ( ( flags & Qt : : AlignHCenter ) = = Qt : : AlignHCenter )
x + = w / 2 - pixmap - > width ( ) / 2 ;
else if ( ( flags & Qt : : AlignLeft ) ! = Qt : : AlignLeft & & QApplication : : reverseLayout ( ) )
x + = w - pixmap - > width ( ) ;
result = QRect ( x , y , pixmap - > width ( ) , pixmap - > height ( ) ) ;
} else if ( ! text . isNull ( ) & & p ) {
result = p - > boundingRect ( x , y , w , h , flags , text , len ) ;
if ( gs = = Qt : : WindowsStyle & & ! enabled ) {
result . setWidth ( result . width ( ) + 1 ) ;
result . setHeight ( result . height ( ) + 1 ) ;
}
} else {
result = QRect ( x , y , w , h ) ;
}
return result ;
}
/*!
Draws the \ a text or \ a pixmap in rectangle \ a r using painter \ a
p and color group \ a g . The pen color is specified with \ a
penColor . The \ a enabled bool indicates whether or not the item is
enabled ; when reimplementing this bool should influence how the
item is drawn . If \ a len is - 1 ( the default ) all the \ a text is
drawn ; otherwise only the first \ a len characters of \ a text are
drawn . The text is aligned and wrapped according to the alignment
\ a flags ( see \ l { Qt : : AlignmentFlags } ) .
By default , if both the text and the pixmap are not null , the
pixmap is drawn and the text is ignored .
*/
void QStyle : : drawItem ( QPainter * p , const QRect & r ,
int flags , const QColorGroup & g , bool enabled ,
const QPixmap * pixmap , const QString & text , int len ,
const QColor * penColor ) const
{
int x = r . x ( ) ;
int y = r . y ( ) ;
int w = r . width ( ) ;
int h = r . height ( ) ;
GUIStyle gs = ( GUIStyle ) styleHint ( SH_GUIStyle ) ;
p - > setPen ( penColor ? * penColor : g . foreground ( ) ) ;
if ( pixmap ) {
QPixmap pm ( * pixmap ) ;
bool clip = ( flags & Qt : : DontClip ) = = 0 ;
if ( clip ) {
if ( pm . width ( ) < w & & pm . height ( ) < h ) {
clip = FALSE ;
} else {
p - > save ( ) ;
QRegion cr = QRect ( x , y , w , h ) ;
if ( p - > hasClipping ( ) )
cr & = p - > clipRegion ( QPainter : : CoordPainter ) ;
p - > setClipRegion ( cr ) ;
}
}
if ( ( flags & Qt : : AlignVCenter ) = = Qt : : AlignVCenter )
y + = h / 2 - pm . height ( ) / 2 ;
else if ( ( flags & Qt : : AlignBottom ) = = Qt : : AlignBottom )
y + = h - pm . height ( ) ;
if ( ( flags & Qt : : AlignRight ) = = Qt : : AlignRight )
x + = w - pm . width ( ) ;
else if ( ( flags & Qt : : AlignHCenter ) = = Qt : : AlignHCenter )
x + = w / 2 - pm . width ( ) / 2 ;
else if ( ( ( flags & Qt : : AlignLeft ) ! = Qt : : AlignLeft ) & & QApplication : : reverseLayout ( ) ) // AlignAuto && rightToLeft
x + = w - pm . width ( ) ;
if ( ! enabled ) {
if ( pm . mask ( ) ) { // pixmap with a mask
if ( ! pm . selfMask ( ) ) { // mask is not pixmap itself
QPixmap pmm ( * pm . mask ( ) ) ;
pmm . setMask ( * ( ( QBitmap * ) & pmm ) ) ;
pm = pmm ;
}
} else if ( pm . depth ( ) = = 1 ) { // monochrome pixmap, no mask
pm . setMask ( * ( ( QBitmap * ) & pm ) ) ;
# ifndef QT_NO_IMAGE_HEURISTIC_MASK
} else { // color pixmap, no mask
QString k ;
k . sprintf ( " $qt-drawitem-%x " , pm . serialNumber ( ) ) ;
QPixmap * mask = QPixmapCache : : find ( k ) ;
bool del = FALSE ;
if ( ! mask ) {
mask = new QPixmap ( pm . createHeuristicMask ( ) ) ;
mask - > setMask ( * ( ( QBitmap * ) mask ) ) ;
del = ! QPixmapCache : : insert ( k , mask ) ;
}
pm = * mask ;
if ( del ) delete mask ;
# endif
}
if ( gs = = Qt : : WindowsStyle ) {
p - > setPen ( g . light ( ) ) ;
p - > drawPixmap ( x + 1 , y + 1 , pm ) ;
p - > setPen ( g . text ( ) ) ;
}
}
p - > drawPixmap ( x , y , pm ) ;
if ( clip )
p - > restore ( ) ;
} else if ( ! text . isNull ( ) ) {
if ( gs = = Qt : : WindowsStyle & & ! enabled ) {
p - > setPen ( g . light ( ) ) ;
p - > drawText ( x + 1 , y + 1 , w , h , flags , text , len ) ;
p - > setPen ( g . text ( ) ) ;
}
p - > drawText ( x , y , w , h , flags , text , len ) ;
}
}
/*!
\ enum QStyle : : PrimitiveElement
This enum represents the PrimitiveElements of a style . A
PrimitiveElement is a common GUI element , such as a checkbox
indicator or pushbutton bevel .
\ value PE_ButtonCommand button used to initiate an action , for
example , a QPushButton .
\ value PE_ButtonDefault this button is the default button , e . g .
in a dialog .
\ value PE_ButtonBevel generic button bevel .
\ value PE_ButtonTool tool button , for example , a QToolButton .
\ value PE_ButtonDropDown drop down button , for example , a tool
button that displays a popup menu , for example , QPopupMenu .
\ value PE_FocusRect generic focus indicator .
\ value PE_ArrowUp up arrow .
\ value PE_ArrowDown down arrow .
\ value PE_ArrowRight right arrow .
\ value PE_ArrowLeft left arrow .
\ value PE_SpinWidgetUp up symbol for a spin widget , for example a
QSpinBox .
\ value PE_SpinWidgetDown down symbol for a spin widget .
\ value PE_SpinWidgetPlus increase symbol for a spin widget .
\ value PE_SpinWidgetMinus decrease symbol for a spin widget .
\ value PE_Indicator on / off indicator , for example , a QCheckBox .
\ value PE_IndicatorMask bitmap mask for an indicator .
\ value PE_ExclusiveIndicator exclusive on / off indicator , for
example , a QRadioButton .
\ value PE_ExclusiveIndicatorMask bitmap mask for an exclusive indicator .
\ value PE_DockWindowHandle tear off handle for dock windows and
toolbars , for example \ l { QDockWindow } s and \ l { QToolBar } s .
\ value PE_DockWindowSeparator item separator for dock window and
toolbar contents .
\ value PE_DockWindowResizeHandle resize handle for dock windows .
\ value PE_Splitter splitter handle ; see also QSplitter .
\ value PE_Panel generic panel frame ; see also QFrame .
\ value PE_PanelPopup panel frame for popup windows / menus ; see also
QPopupMenu .
\ value PE_PanelMenuBar panel frame for menu bars .
\ value PE_PanelDockWindow panel frame for dock windows and toolbars .
\ value PE_PanelTabWidget panel frame for tab widgets .
\ value PE_PanelLineEdit panel frame for line edits .
\ value PE_PanelGroupBox panel frame for group boxes .
\ value PE_TabBarBase area below tabs in a tab widget , for example ,
QTab .
\ value PE_HeaderSection section of a list or table header ; see also
QHeader .
\ value PE_HeaderArrow arrow used to indicate sorting on a list or table
header
\ value PE_StatusBarSection section of a status bar ; see also
QStatusBar .
\ value PE_GroupBoxFrame frame around a group box ; see also
QGroupBox .
\ value PE_WindowFrame frame around a MDI window or a docking window
\ value PE_Separator generic separator .
\ value PE_SizeGrip window resize handle ; see also QSizeGrip .
\ value PE_CheckMark generic check mark ; see also QCheckBox .
\ value PE_ScrollBarAddLine scrollbar line increase indicator
( i . e . scroll down ) ; see also QScrollBar .
\ value PE_ScrollBarSubLine scrollbar line decrease indicator ( i . e . scroll up ) .
\ value PE_ScrollBarAddPage scolllbar page increase indicator ( i . e . page down ) .
\ value PE_ScrollBarSubPage scrollbar page decrease indicator ( i . e . page up ) .
\ value PE_ScrollBarSlider scrollbar slider
\ value PE_ScrollBarFirst scrollbar first line indicator ( i . e . home ) .
\ value PE_ScrollBarLast scrollbar last line indicator ( i . e . end ) .
\ value PE_ProgressBarChunk section of a progress bar indicator ; see
also QProgressBar .
\ value PE_CheckListController controller part of a listview item
\ value PE_CheckListIndicator checkbox part of a listview item
\ value PE_CheckListExclusiveIndicator radiobutton part of a listview item
\ value PE_RubberBand rubber band used in such things as iconview
\ value PE_CustomBase base value for custom PrimitiveElements .
All values above this are reserved for custom use . Custom
values must be greater than this value .
\ sa drawPrimitive ( )
*/
/*! \enum QStyle::SFlags
\ internal
*/
/*! \enum QStyle::SCFlags
\ internal
*/
/*!
\ enum QStyle : : StyleFlags
This enum represents flags for drawing PrimitiveElements . Not all
primitives use all of these flags . Note that these flags may mean
different things to different primitives . For an explanation of
the relationship between primitives and their flags , as well as
the different meanings of the flags , see the \ link
customstyles . html Style overview \ endlink .
\ value Style_Default
\ value Style_Enabled
\ value Style_Raised
\ value Style_Sunken
\ value Style_Off
\ value Style_NoChange
\ value Style_On
\ value Style_Down
\ value Style_Horizontal
\ value Style_HasFocus
\ value Style_Top
\ value Style_Bottom
\ value Style_FocusAtBorder
\ value Style_AutoRaise
\ value Style_MouseOver
\ value Style_Up
\ value Style_Selected
\ value Style_HasFocus
\ value Style_Active
\ value Style_ButtonDefault
\ sa drawPrimitive ( )
*/
/*!
\ fn void QStyle : : drawPrimitive ( PrimitiveElement pe , QPainter * p , QStyleControlElementData ceData , ControlElementFlags elementFlags , const QRect & r , const QColorGroup & cg , SFlags flags , const QStyleOption & opt ) const
Draws the style PrimitiveElement \ a pe using the painter \ a p in
the area \ a r . Colors are used from the color group \ a cg .
\ a ceData and \ a elementFlags provide additional information about
the widget for which the PrimitiveElement is being drawn .
The rect \ a r should be in screen coordinates .
The \ a flags argument is used to control how the PrimitiveElement
is drawn . Multiple flags can be OR ' ed together .
For example , a pressed button would be drawn with the flags \ c
Style_Enabled and \ c Style_Down .
The \ a opt argument can be used to control how various
PrimitiveElements are drawn . Note that \ a opt may be the default
value even for PrimitiveElements that make use of extra options .
When \ a opt is non - default , it is used as follows :
\ table
\ header \ i PrimitiveElement \ i Options \ i Notes
\ row \ i \ l PE_FocusRect
\ i \ l QStyleOption ( const \ l QColor & bg )
\ list
\ i opt . \ link QStyleOption : : color ( ) color \ endlink ( )
\ endlist
\ i \ e bg is the background color on which the focus rect is being drawn .
\ row \ i12 \ l PE_Panel
\ i12 \ l QStyleOption ( int linewidth , int midlinewidth )
\ list
\ i opt . \ link QStyleOption : : lineWidth ( ) lineWidth \ endlink ( )
\ i opt . \ link QStyleOption : : midLineWidth ( ) midLineWidth \ endlink ( )
\ endlist
\ i \ e linewidth is the line width for drawing the panel .
\ row \ i \ e midlinewidth is the mid - line width for drawing the panel .
\ row \ i12 \ l PE_PanelPopup
\ i12 \ l QStyleOption ( int linewidth , int midlinewidth )
\ list
\ i opt . \ link QStyleOption : : lineWidth ( ) lineWidth \ endlink ( )
\ i opt . \ link QStyleOption : : midLineWidth ( ) midLineWidth \ endlink ( )
\ endlist
\ i \ e linewidth is the line width for drawing the panel .
\ row \ i \ e midlinewidth is the mid - line width for drawing the panel .
\ row \ i12 \ l PE_PanelMenuBar
\ i12 \ l QStyleOption ( int linewidth , int midlinewidth )
\ list
\ i opt . \ link QStyleOption : : lineWidth ( ) lineWidth \ endlink ( )
\ i opt . \ link QStyleOption : : midLineWidth ( ) midLineWidth \ endlink ( )
\ endlist
\ i \ e linewidth is the line width for drawing the panel .
\ row \ i \ e midlinewidth is the mid - line width for drawing the panel .
\ row \ i12 \ l PE_PanelDockWindow
\ i12 \ l QStyleOption ( int linewidth , int midlinewidth )
\ list
\ i opt . \ link QStyleOption : : lineWidth ( ) lineWidth \ endlink ( )
\ i opt . \ link QStyleOption : : midLineWidth ( ) midLineWidth \ endlink ( )
\ endlist
\ i \ e linewidth is the line width for drawing the panel .
\ row \ i \ e midlinewidth is the mid - line width for drawing the panel .
\ row \ i14 \ l PE_GroupBoxFrame
\ i14 \ l QStyleOption ( int linewidth , int midlinewidth , int shape , int shadow )
\ list
\ i opt . \ link QStyleOption : : lineWidth ( ) lineWidth \ endlink ( )
\ i opt . \ link QStyleOption : : midLineWidth ( ) midLineWidth \ endlink ( )
\ i opt . \ link QStyleOption : : frameShape ( ) frameShape \ endlink ( )
\ i opt . \ link QStyleOption : : frameShadow ( ) frameShadow \ endlink ( )
\ endlist
\ i \ e linewidth is the line width for the group box .
\ row \ i \ e midlinewidth is the mid - line width for the group box .
\ row \ i \ e shape is the \ link QFrame : : frameShape frame shape \ endlink
for the group box .
\ row \ i \ e shadow is the \ link QFrame : : frameShadow frame shadow \ endlink
for the group box .
\ endtable
For all other \ link QStyle : : PrimitiveElement
PrimitiveElements \ endlink , \ a opt is unused .
\ sa StyleFlags
*/
/*!
\ enum QStyle : : ControlElement
This enum represents a ControlElement . A ControlElement is part of
a widget that performs some action or displays information to the
user .
\ value CE_PushButton the bevel and default indicator of a QPushButton .
\ value CE_PushButtonLabel the label ( iconset with text or pixmap )
of a QPushButton .
\ value CE_CheckBox the indicator of a QCheckBox .
\ value CE_CheckBoxLabel the label ( text or pixmap ) of a QCheckBox .
\ value CE_RadioButton the indicator of a QRadioButton .
\ value CE_RadioButtonLabel the label ( text or pixmap ) of a QRadioButton .
\ value CE_TabBarTab the tab within a QTabBar ( a QTab ) .
\ value CE_TabBarLabel the label within a QTab .
\ value CE_ProgressBarGroove the groove where the progress
indicator is drawn in a QProgressBar .
\ value CE_ProgressBarContents the progress indicator of a QProgressBar .
\ value CE_ProgressBarLabel the text label of a QProgressBar .
\ value CE_PopupMenuItem a menu item in a QPopupMenu .
\ value CE_PopupMenuScroller scrolling areas in a popumenu when the
style supports scrolling .
\ value CE_PopupMenuHorizontalExtra extra frame area set aside with PM_PopupMenuFrameHorizontalExtra
\ value CE_PopupMenuVerticalExtra extra frame area set aside with PM_PopupMenuFrameVerticalExtra
\ value CE_MenuBarItem a menu item in a QMenuBar .
\ value CE_ToolButtonLabel a tool button ' s label .
\ value CE_MenuBarEmptyArea the empty area of a QMenuBar .
\ value CE_DockWindowEmptyArea the empty area of a QDockWindow .
\ value CE_ToolBoxTab the toolbox ' s tab area
\ value CE_HeaderLabel the header ' s label
\ value CE_CustomBase base value for custom ControlElements . All values above
this are reserved for custom use . Therefore , custom values must be
greater than this value .
\ sa drawControl ( )
*/
/*!
\ fn void QStyle : : drawControl ( ControlElement element , QPainter * p , QStyleControlElementData ceData , ControlElementFlags elementFlags , const QRect & r , const QColorGroup & cg , SFlags how , const QStyleOption & opt , const QWidget * widget ) const
Draws the ControlElement \ a element using the painter \ a p in the
area \ a r . Colors are used from the color group \ a cg .
The rect \ a r should be in screen coordinates .
\ a ceData and \ a elementFlags provide additional information about
the widget for which the PrimitiveElement is being drawn .
The \ a how argument is used to control how the ControlElement is
drawn . Multiple flags can be OR ' ed together . See the table below
for an explanation of which flags are used with the various
ControlElements .
The \ a widget argument is a pointer to a QWidget or one of its
subclasses . Note that usage of the widget argument is deprecated
in favor of specifying widget parameters via \ a ceData and \ a elementFlags .
The widget can be cast to the appropriate type based
on the value of \ a element . The \ a opt argument can be used to
pass extra information required when drawing the ControlElement .
Note that \ a opt may be the default value even for ControlElements
that can make use of the extra options . See the table below for
the appropriate \ a widget and \ a opt usage :
\ table
\ header \ i ControlElement < br > \ & Widget Cast
\ i Style Flags
\ i Notes
\ i Options
\ i Notes
\ row \ i16 \ l { CE_PushButton } ( const \ l QPushButton * )
and
\ l { CE_PushButtonLabel } ( const \ l QPushButton * )
\ i \ l Style_Enabled \ i Set if the button is enabled .
\ i16 Unused .
\ i16 & nbsp ;
\ row \ i \ l Style_HasFocus \ i Set if the button has input focus .
\ row \ i \ l Style_Raised \ i Set if the button is not down , not on and not flat .
\ row \ i \ l Style_On \ i Set if the button is a toggle button and toggled on .
\ row \ i \ l Style_Down \ i Set if the button is down ( i . e . , the mouse button or
space bar is pressed on the button ) .
\ row \ i \ l Style_ButtonDefault \ i Set if the button is a default button .
\ row \ i16 \ l { CE_CheckBox } ( const \ l QCheckBox * )
and
\ l { CE_CheckBoxLabel } ( const \ l QCheckBox * )
\ i \ l Style_Enabled \ i Set if the checkbox is enabled .
\ i16 Unused .
\ i16 & nbsp ;
\ row \ i \ l Style_HasFocus \ i Set if the checkbox has input focus .
\ row \ i \ l Style_On \ i Set if the checkbox is checked .
\ row \ i \ l Style_Off \ i Set if the checkbox is not checked .
\ row \ i \ l Style_NoChange \ i Set if the checkbox is in the NoChange state .
\ row \ i \ l Style_Down \ i Set if the checkbox is down ( i . e . , the mouse button or
space bar is pressed on the button ) .
\ row \ i15 \ l { CE_RadioButton } ( const QRadioButton * )
and
\ l { CE_RadioButtonLabel } ( const QRadioButton * )
\ i \ l Style_Enabled \ i Set if the radiobutton is enabled .
\ i15 Unused .
\ i15 & nbsp ;
\ row \ i \ l Style_HasFocus \ i Set if the radiobutton has input focus .
\ row \ i \ l Style_On \ i Set if the radiobutton is checked .
\ row \ i \ l Style_Off \ i Set if the radiobutton is not checked .
\ row \ i \ l Style_Down \ i Set if the radiobutton is down ( i . e . , the mouse
button or space bar is pressed on the radiobutton ) .
\ row \ i12 \ l { CE_TabBarTab } ( const \ l QTabBar * )
and
\ l { CE_TabBarLabel } ( const \ l QTabBar * )
\ i \ l Style_Enabled \ i Set if the tabbar and tab is enabled .
\ i12 \ l QStyleOption ( \ l QTab * t )
\ list
\ i opt . \ link QStyleOption : : tab ( ) tab \ endlink ( )
\ endlist
\ i12 \ e t is the QTab being drawn .
\ row \ i \ l Style_Selected \ i Set if the tab is the current tab .
\ row \ i12 \ l { CE_ProgressBarGroove } ( const QProgressBar * )
and
\ l { CE_ProgressBarContents } ( const QProgressBar * )
and
\ l { CE_ProgressBarLabel } ( const QProgressBar * )
\ i \ l Style_Enabled \ i Set if the progressbar is enabled .
\ i12 Unused .
\ i12 & nbsp ;
\ row \ i \ l Style_HasFocus \ i Set if the progressbar has input focus .
\ row \ i13 \ l { CE_PopupMenuItem } ( const \ l QPopupMenu * )
\ i \ l Style_Enabled \ i Set if the menuitem is enabled .
\ i13 \ l QStyleOption ( QMenuItem * mi , int tabwidth , int maxpmwidth )
\ list
\ i opt . \ link QStyleOption : : menuItem ( ) menuItem \ endlink ( )
\ i opt . \ link QStyleOption : : tabWidth ( ) tabWidth \ endlink ( )
\ i opt . \ link QStyleOption : : maxIconWidth ( ) maxIconWidth \ endlink ( )
\ endlist
\ i \ e mi is the menu item being drawn . QMenuItem is currently an
internal class .
\ row \ i \ l Style_Active \ i Set if the menuitem is the current item .
\ i \ e tabwidth is the width of the tab column where key accelerators
are drawn .
\ row \ i \ l Style_Down \ i Set if the menuitem is down ( i . e . , the mouse button
or space bar is pressed ) .
\ i \ e maxpmwidth is the maximum width of the check column where
checkmarks and iconsets are drawn .
\ row \ i14 \ l { CE_MenuBarItem } ( const \ l QMenuBar * )
\ i \ l Style_Enabled \ i Set if the menuitem is enabled
\ i14 \ l QStyleOption ( QMenuItem * mi )
\ list
\ i opt . \ link QStyleOption : : menuItem ( ) menuItem \ endlink ( )
\ endlist
\ i14 \ e mi is the menu item being drawn .
\ row \ i \ l Style_Active \ i Set if the menuitem is the current item .
\ row \ i \ l Style_Down \ i Set if the menuitem is down ( i . e . , a mouse button or
the space bar is pressed ) .
\ row \ i \ l Style_HasFocus \ i Set if the menubar has input focus .
\ row \ i17 \ l { CE_ToolButtonLabel } ( const \ l QToolButton * )
\ i \ l Style_Enabled \ i Set if the toolbutton is enabled .
\ i17 \ l QStyleOption ( \ l ArrowType t )
\ list
\ i opt . \ link QStyleOption : : arrowType ( ) arrowType \ endlink ( )
\ endlist
\ i17 When the tool button only contains an arrow , \ e t is the
arrow ' s type .
\ row \ i \ l Style_HasFocus \ i Set if the toolbutton has input focus .
\ row \ i \ l Style_Down \ i Set if the toolbutton is down ( i . e . , a
mouse button or the space is pressed ) .
\ row \ i \ l Style_On \ i Set if the toolbutton is a toggle button
and is toggled on .
\ row \ i \ l Style_AutoRaise \ i Set if the toolbutton has auto - raise enabled .
\ row \ i \ l Style_MouseOver \ i Set if the mouse pointer is over the toolbutton .
\ row \ i \ l Style_Raised \ i Set if the button is not down , not on and doesn ' t
contain the mouse when auto - raise is enabled .
\ endtable
\ sa ControlElement , StyleFlags
*/
/*!
\ fn void QStyle : : drawControlMask ( ControlElement element , QPainter * p , QStyleControlElementData ceData , ControlElementFlags elementFlags , const QRect & r , const QStyleOption & opt , const QWidget * widget ) const
Draw a bitmask for the ControlElement \ a element using the painter
\ a p in the area \ a r . See drawControl ( ) for an explanation of the
use of the \ a widget and \ a opt arguments .
\ a ceData and \ a elementFlags provide additional information about
the widget for which the PrimitiveElement is being drawn .
The rect \ a r should be in screen coordinates .
\ a widget is deprecated and should not be used .
\ sa drawControl ( ) , ControlElement
*/
/*!
\ enum QStyle : : SubRect
This enum represents a sub - area of a widget . Style implementations
would use these areas to draw the different parts of a widget .
\ value SR_PushButtonContents area containing the label ( iconset
with text or pixmap ) .
\ value SR_PushButtonFocusRect area for the focus rect ( usually
larger than the contents rect ) .
\ value SR_CheckBoxIndicator area for the state indicator ( e . g . check mark ) .
\ value SR_CheckBoxContents area for the label ( text or pixmap ) .
\ value SR_CheckBoxFocusRect area for the focus indicator .
\ value SR_RadioButtonIndicator area for the state indicator .
\ value SR_RadioButtonContents area for the label .
\ value SR_RadioButtonFocusRect area for the focus indicator .
\ value SR_ComboBoxFocusRect area for the focus indicator .
\ value SR_SliderFocusRect area for the focus indicator .
\ value SR_DockWindowHandleRect area for the tear - off handle .
\ value SR_ProgressBarGroove area for the groove .
\ value SR_ProgressBarContents area for the progress indicator .
\ value SR_ProgressBarLabel area for the text label .
\ value SR_ToolButtonContents area for the tool button ' s label .
\ value SR_DialogButtonAccept area for a dialog ' s accept button .
\ value SR_DialogButtonReject area for a dialog ' s reject button .
\ value SR_DialogButtonApply area for a dialog ' s apply button .
\ value SR_DialogButtonHelp area for a dialog ' s help button .
\ value SR_DialogButtonAll area for a dialog ' s all button .
\ value SR_DialogButtonRetry area for a dialog ' s retry button .
\ value SR_DialogButtonAbort area for a dialog ' s abort button .
\ value SR_DialogButtonIgnore area for a dialog ' s ignore button .
\ value SR_DialogButtonCustom area for a dialog ' s custom widget area ( in button row ) .
\ value SR_ToolBoxTabContents area for a toolbox tab ' s icon and label
\ value SR_CustomBase base value for custom ControlElements . All values above
this are reserved for custom use . Therefore , custom values must be
greater than this value .
\ sa subRect ( )
*/
/*!
\ fn QRect QStyle : : subRect ( SubRect subrect , const QStyleControlElementData ceData , const ControlElementFlags elementFlags , const QWidget * widget ) const ;
Returns the sub - area \ a subrect for the \ a widget in logical
coordinates .
\ a ceData and \ a elementFlags provide additional information about
the widget for which the PrimitiveElement is being drawn .
The \ a widget argument is a pointer to a QWidget or one of its
subclasses . Note that usage of \ a widget is deprecated in favor
of \ a ceData and \ a elementFlags . The widget can be cast to the
appropriate type based on the value of \ a subrect . See the table
below for the appropriate \ a widget casts :
\ table
\ header \ i SubRect \ i Widget Cast
\ row \ i \ l SR_PushButtonContents \ i ( const \ l QPushButton * )
\ row \ i \ l SR_PushButtonFocusRect \ i ( const \ l QPushButton * )
\ row \ i \ l SR_CheckBoxIndicator \ i ( const \ l QCheckBox * )
\ row \ i \ l SR_CheckBoxContents \ i ( const \ l QCheckBox * )
\ row \ i \ l SR_CheckBoxFocusRect \ i ( const \ l QCheckBox * )
\ row \ i \ l SR_RadioButtonIndicator \ i ( const \ l QRadioButton * )
\ row \ i \ l SR_RadioButtonContents \ i ( const \ l QRadioButton * )
\ row \ i \ l SR_RadioButtonFocusRect \ i ( const \ l QRadioButton * )
\ row \ i \ l SR_ComboBoxFocusRect \ i ( const \ l QComboBox * )
\ row \ i \ l SR_DockWindowHandleRect \ i ( const \ l QWidget * )
\ row \ i \ l SR_ProgressBarGroove \ i ( const \ l QProgressBar * )
\ row \ i \ l SR_ProgressBarContents \ i ( const \ l QProgressBar * )
\ row \ i \ l SR_ProgressBarLabel \ i ( const \ l QProgressBar * )
\ endtable
The tear - off handle ( SR_DockWindowHandleRect ) for QDockWindow
is a private class . Use QWidget : : parentWidget ( ) to access the
QDockWindow :
\ code
if ( ! widget - > parentWidget ( ) )
return ;
const QDockWindow * dw = ( const QDockWindow * ) widget - > parentWidget ( ) ;
\ endcode
\ sa SubRect
*/
/*!
\ enum QStyle : : ComplexControl
This enum represents a ComplexControl . ComplexControls have
different behaviour depending upon where the user clicks on them
or which keys are pressed .
\ value CC_SpinWidget
\ value CC_ComboBox
\ value CC_ScrollBar
\ value CC_Slider
\ value CC_ToolButton
\ value CC_TitleBar
\ value CC_ListView
\ value CC_CustomBase base value for custom ControlElements . All
values above this are reserved for custom use . Therefore ,
custom values must be greater than this value .
\ sa SubControl drawComplexControl ( )
*/
/*!
\ enum QStyle : : SubControl
This enum represents a SubControl within a ComplexControl .
\ value SC_None special value that matches no other SubControl .
\ value SC_ScrollBarAddLine scrollbar add line ( i . e . down / right
arrow ) ; see also QScrollbar .
\ value SC_ScrollBarSubLine scrollbar sub line ( i . e . up / left arrow ) .
\ value SC_ScrollBarAddPage scrollbar add page ( i . e . page down ) .
\ value SC_ScrollBarSubPage scrollbar sub page ( i . e . page up ) .
\ value SC_ScrollBarFirst scrollbar first line ( i . e . home ) .
\ value SC_ScrollBarLast scrollbar last line ( i . e . end ) .
\ value SC_ScrollBarSlider scrollbar slider handle .
\ value SC_ScrollBarGroove special subcontrol which contains the
area in which the slider handle may move .
\ value SC_SpinWidgetUp spinwidget up / increase ; see also QSpinBox .
\ value SC_SpinWidgetDown spinwidget down / decrease .
\ value SC_SpinWidgetFrame spinwidget frame .
\ value SC_SpinWidgetEditField spinwidget edit field .
\ value SC_SpinWidgetButtonField spinwidget button field .
\ value SC_ComboBoxEditField combobox edit field ; see also QComboBox .
\ value SC_ComboBoxArrow combobox arrow
\ value SC_ComboBoxFrame combobox frame
\ value SC_ComboBoxListBoxPopup combobox list box
\ value SC_SliderGroove special subcontrol which contains the area
in which the slider handle may move .
\ value SC_SliderHandle slider handle .
\ value SC_SliderTickmarks slider tickmarks .
\ value SC_ToolButton tool button ; see also QToolbutton .
\ value SC_ToolButtonMenu subcontrol for opening a popup menu in a
tool button ; see also QPopupMenu .
\ value SC_TitleBarSysMenu system menu button ( i . e . restore , close , etc . ) .
\ value SC_TitleBarMinButton minimize button .
\ value SC_TitleBarMaxButton maximize button .
\ value SC_TitleBarCloseButton close button .
\ value SC_TitleBarLabel window title label .
\ value SC_TitleBarNormalButton normal ( restore ) button .
\ value SC_TitleBarShadeButton shade button .
\ value SC_TitleBarUnshadeButton unshade button .
\ value SC_ListView the list view area .
\ value SC_ListViewBranch ( internal )
\ value SC_ListViewExpand expand item ( i . e . show / hide child items ) .
\ value SC_All special value that matches all SubControls .
\ sa ComplexControl
*/
/*!
\ fn void QStyle : : drawComplexControl ( ComplexControl control , QPainter * p , QStyleControlElementData ceData , ControlElementFlags elementFlags , const QRect & r , const QColorGroup & cg , SFlags how , SCFlags sub , SCFlags subActive , const QStyleOption & opt , const QWidget * widget ) const
Draws the ComplexControl \ a control using the painter \ a p in the
area \ a r . Colors are used from the color group \ a cg . The \ a sub
argument specifies which SubControls to draw . Multiple SubControls
can be OR ' ed together . The \ a subActive argument specifies which
SubControl is active .
The rect \ a r should be in logical coordinates . Reimplementations
of this function should use visualRect ( ) to change the logical
coordinates into screen coordinates when using drawPrimitive ( ) and
drawControl ( ) .
\ a ceData and \ a elementFlags provide additional information about
the widget for which the PrimitiveElement is being drawn .
The \ a how argument is used to control how the ComplexControl is
drawn . Multiple flags can OR ' ed together . See the table below for
an explanation of which flags are used with the various
ComplexControls .
The \ a widget argument is a pointer to a QWidget or one of its
subclasses . The widget can be cast to the appropriate type based
on the value of \ a control . Note that usage of \ a widget is
deprecated in favor of \ a ceData and \ a elementFlags . The \ a opt
argument can be used to pass extra information required when
drawing the ComplexControl . Note that \ a opt may be the default
value even for ComplexControls that can make use of the extra
options . See the table below for the appropriate \ a widget and
\ a opt usage :
\ table
\ header \ i ComplexControl < br > \ & Widget Cast
\ i Style Flags
\ i Notes
\ i Options
\ i Notes
\ row \ i12 \ l { CC_SpinWidget } ( const QSpinWidget * )
\ i \ l Style_Enabled \ i Set if the spinwidget is enabled .
\ i12 Unused .
\ i12 & nbsp ;
\ row \ i \ l Style_HasFocus \ i Set if the spinwidget has input focus .
\ row \ i12 \ l { CC_ComboBox } ( const \ l QComboBox * )
\ i \ l Style_Enabled \ i Set if the combobox is enabled .
\ i12 Unused .
\ i12 & nbsp ;
\ row \ i \ l Style_HasFocus \ i Set if the combobox has input focus .
\ row \ i12 \ l { CC_ScrollBar } ( const \ l QScrollBar * )
\ i \ l Style_Enabled \ i Set if the scrollbar is enabled .
\ i12 Unused .
\ i12 & nbsp ;
\ row \ i \ l Style_HasFocus \ i Set if the scrollbar has input focus .
\ row \ i12 \ l { CC_Slider } ( const \ l QSlider * )
\ i \ l Style_Enabled \ i Set if the slider is enabled .
\ i12 Unused .
\ i12 & nbsp ;
\ row \ i \ l Style_HasFocus \ i Set if the slider has input focus .
\ row \ i16 \ l { CC_ToolButton } ( const \ l QToolButton * )
\ i \ l Style_Enabled \ i Set if the toolbutton is enabled .
\ i16 \ l QStyleOption ( \ l ArrowType t )
\ list
\ i opt . \ link QStyleOption : : arrowType ( ) arrowType \ endlink ( )
\ endlist
\ i16 When the tool button only contains an arrow , \ e t is the
arrow ' s type .
\ row \ i \ l Style_HasFocus \ i Set if the toolbutton has input focus .
\ row \ i \ l Style_Down \ i Set if the toolbutton is down ( ie . mouse
button or space pressed ) .
\ row \ i \ l Style_On \ i Set if the toolbutton is a toggle button
and is toggled on .
\ row \ i \ l Style_AutoRaise \ i Set if the toolbutton has auto - raise enabled .
\ row \ i \ l Style_Raised \ i Set if the button is not down , not on and doesn ' t
contain the mouse when auto - raise is enabled .
\ row \ i \ l { CC_TitleBar } ( const \ l QWidget * )
\ i \ l Style_Enabled \ i Set if the titlebar is enabled .
\ i Unused .
\ i & nbsp ;
\ row \ i \ l { CC_ListView } ( const \ l QListView * )
\ i \ l Style_Enabled \ i Set if the titlebar is enabled .
\ i \ l QStyleOption ( \ l QListViewItem * item )
\ list
\ i opt . \ link QStyleOption : : listViewItem ( ) listViewItem \ endlink ( )
\ endlist
\ i \ e item is the item that needs branches drawn
\ endtable
\ sa ComplexControl , SubControl
*/
/*!
\ fn void QStyle : : drawComplexControlMask ( ComplexControl control , QPainter * p , const QStyleControlElementData ceData , const ControlElementFlags elementFlags , const QRect & r , const QStyleOption & opt , const QWidget * widget ) const
Draw a bitmask for the ComplexControl \ a control using the painter
\ a p in the area \ a r . See drawComplexControl ( ) for an explanation
of the use of the \ a widget and \ a opt arguments .
\ a ceData and \ a elementFlags provide additional information about
the widget for which the PrimitiveElement is being drawn .
The rect \ a r should be in logical coordinates . Reimplementations
of this function should use visualRect ( ) to change the logical
corrdinates into screen coordinates when using drawPrimitive ( ) and
drawControl ( ) .
Note that usage of \ a widget is deprecated in favor of \ a ceData and \ a elementFlags .
\ sa drawComplexControl ( ) ComplexControl
*/
/*!
\ fn QRect QStyle : : querySubControlMetrics ( ComplexControl control , QStyleControlElementData ceData , ControlElementFlags elementFlags , SubControl subcontrol , const QStyleOption & opt = QStyleOption : : Default , const QWidget * widget = 0 ) const ;
Returns the rect for the SubControl \ a subcontrol for \ a widget in
logical coordinates .
\ a ceData and \ a elementFlags provide additional information about
the widget for which the PrimitiveElement is being drawn .
The \ a widget argument is a pointer to a QWidget or one of its
subclasses . The widget can be cast to the appropriate type based
on the value of \ a control . The \ a opt argument can be used to
pass extra information required when drawing the ComplexControl .
Note that \ a opt may be the default value even for ComplexControls
that can make use of the extra options . See drawComplexControl ( )
for an explanation of the \ a widget and \ a opt arguments .
Note that usage of \ a widget is deprecated in favor of \ a ceData and \ a elementFlags .
\ sa drawComplexControl ( ) , ComplexControl , SubControl
*/
/*!
\ fn SubControl QStyle : : querySubControl ( ComplexControl control , QStyleControlElementData ceData , ControlElementFlags elementFlags , const QPoint & pos , const QStyleOption & opt = QStyleOption : : Default , const QWidget * widget = 0 ) const ;
Returns the SubControl for \ a widget at the point \ a pos . The \ a
widget argument is a pointer to a QWidget or one of its
subclasses . The widget can be cast to the appropriate type based
on the value of \ a control . The \ a opt argument can be used to
pass extra information required when drawing the ComplexControl .
Note that \ a opt may be the default value even for ComplexControls
that can make use of the extra options . See drawComplexControl ( )
for an explanation of the \ a widget and \ a opt arguments .
\ a ceData and \ a elementFlags provide additional information about
the widget for which the PrimitiveElement is being drawn .
Note that \ a pos is passed in screen coordinates . When using
querySubControlMetrics ( ) to check for hits and misses , use
visualRect ( ) to change the logical coordinates into screen
coordinates .
Note that usage of \ a widget is deprecated in favor of \ a ceData and \ a elementFlags .
\ sa drawComplexControl ( ) , ComplexControl , SubControl , querySubControlMetrics ( )
*/
/*!
\ enum QStyle : : PixelMetric
This enum represents a PixelMetric . A PixelMetric is a style
dependent size represented as a single pixel value .
\ value PM_ButtonMargin amount of whitespace between pushbutton
labels and the frame .
\ value PM_ButtonDefaultIndicator width of the default - button indicator frame .
\ value PM_MenuButtonIndicator width of the menu button indicator
proportional to the widget height .
\ value PM_ButtonShiftHorizontal horizontal contents shift of a
button when the button is down .
\ value PM_ButtonShiftVertical vertical contents shift of a button when the
button is down .
\ value PM_DefaultFrameWidth default frame width , usually 2.
\ value PM_SpinBoxFrameWidth frame width of a spin box .
\ value PM_MDIFrameWidth frame width of an MDI window .
\ value PM_MDIMinimizedWidth width of a minimized MSI window .
\ value PM_MaximumDragDistance Some feels require the scrollbar or
other sliders to jump back to the original position when the
mouse pointer is too far away while dragging . A value of - 1
disables this behavior .
\ value PM_ScrollBarExtent width of a vertical scrollbar and the
height of a horizontal scrollbar .
\ value PM_ScrollBarSliderMin the minimum height of a vertical
scrollbar ' s slider and the minimum width of a horiztonal
scrollbar slider .
\ value PM_SliderThickness total slider thickness .
\ value PM_SliderControlThickness thickness of the slider handle .
\ value PM_SliderLength length of the slider .
\ value PM_SliderTickmarkOffset the offset between the tickmarks
and the slider .
\ value PM_SliderSpaceAvailable the available space for the slider to move .
\ value PM_DockWindowSeparatorExtent width of a separator in a
horiztonal dock window and the height of a separator in a
vertical dock window .
\ value PM_DockWindowHandleExtent width of the handle in a
horizontal dock window and the height of the handle in a
vertical dock window .
\ value PM_DockWindowFrameWidth frame width of a dock window .
\ value PM_MenuBarFrameWidth frame width of a menubar .
\ value PM_MenuBarItemSpacing spacing between menubar items .
\ value PM_ToolBarItemSpacing spacing between toolbar items .
\ value PM_TabBarTabOverlap number of pixels the tabs should overlap .
\ value PM_TabBarTabHSpace extra space added to the tab width .
\ value PM_TabBarTabVSpace extra space added to the tab height .
\ value PM_TabBarBaseHeight height of the area between the tab bar
and the tab pages .
\ value PM_TabBarBaseOverlap number of pixels the tab bar overlaps
the tab bar base .
\ value PM_TabBarScrollButtonWidth
\ value PM_TabBarTabShiftHorizontal horizontal pixel shift when a
tab is selected .
\ value PM_TabBarTabShiftVertical vertical pixel shift when a
tab is selected .
\ value PM_ProgressBarChunkWidth width of a chunk in a progress bar indicator .
\ value PM_SplitterWidth width of a splitter .
\ value PM_TitleBarHeight height of the title bar .
\ value PM_PopupMenuFrameHorizontalExtra additional border , e . g . for panels
\ value PM_PopupMenuFrameVerticalExtra additional border , e . g . for panels
\ value PM_IndicatorWidth width of a check box indicator .
\ value PM_IndicatorHeight height of a checkbox indicator .
\ value PM_ExclusiveIndicatorWidth width of a radio button indicator .
\ value PM_ExclusiveIndicatorHeight height of a radio button indicator .
\ value PM_PopupMenuScrollerHeight height of the scroller area in a popupmenu .
\ value PM_PopupMenuScrollerHeight height of the scroller area in a popupmenu .
\ value PM_CheckListButtonSize area ( width / height ) of the
checkbox / radiobutton in a QCheckListItem
\ value PM_CheckListControllerSize area ( width / height ) of the
controller in a QCheckListItem
\ value PM_DialogButtonsSeparator distance between buttons in a dialog buttons widget .
\ value PM_DialogButtonsButtonWidth minimum width of a button in a dialog buttons widget .
\ value PM_DialogButtonsButtonHeight minimum height of a button in a dialog buttons widget .
\ value PM_HeaderMarkSize
\ value PM_HeaderGripMargin
\ value PM_HeaderMargin
\ value PM_CustomBase base value for custom ControlElements . All
values above this are reserved for custom use . Therefore ,
custom values must be greater than this value .
\ sa pixelMetric ( )
*/
/*!
\ fn int QStyle : : pixelMetric ( PixelMetric metric , QStyleControlElementData ceData , ControlElementFlags elementFlags , const QWidget * widget = 0 ) const ;
Returns the pixel metric for \ a metric .
\ a ceData and \ a elementFlags provide additional information about
the widget for which the PrimitiveElement is being drawn .
The \ a widget argument is a pointer to a QWidget or one of its
subclasses . The widget can be cast to the appropriate type based
on the value of \ a metric . Note that \ a widget may be zero even
for PixelMetrics that can make use of \ a widget . Note also that
usage of \ a widget is deprecated in favor of \ a ceData and
\ a elementFlags . See the table below for the appropriate
\ a widget casts :
\ table
\ header \ i PixelMetric \ i Widget Cast
\ row \ i \ l PM_SliderControlThickness \ i ( const \ l QSlider * )
\ row \ i \ l PM_SliderLength \ i ( const \ l QSlider * )
\ row \ i \ l PM_SliderTickmarkOffset \ i ( const \ l QSlider * )
\ row \ i \ l PM_SliderSpaceAvailable \ i ( const \ l QSlider * )
\ row \ i \ l PM_TabBarTabOverlap \ i ( const \ l QTabBar * )
\ row \ i \ l PM_TabBarTabHSpace \ i ( const \ l QTabBar * )
\ row \ i \ l PM_TabBarTabVSpace \ i ( const \ l QTabBar * )
\ row \ i \ l PM_TabBarBaseHeight \ i ( const \ l QTabBar * )
\ row \ i \ l PM_TabBarBaseOverlap \ i ( const \ l QTabBar * )
\ endtable
*/
/*!
\ enum QStyle : : ContentsType
This enum represents a ContentsType . It is used to calculate sizes
for the contents of various widgets .
\ value CT_PushButton
\ value CT_CheckBox
\ value CT_RadioButton
\ value CT_ToolButton
\ value CT_ComboBox
\ value CT_Splitter
\ value CT_DockWindow
\ value CT_ProgressBar
\ value CT_PopupMenuItem
\ value CT_TabBarTab
\ value CT_Slider
\ value CT_Header
\ value CT_LineEdit
\ value CT_MenuBar
\ value CT_SpinBox
\ value CT_SizeGrip
\ value CT_TabWidget
\ value CT_DialogButtons
\ value CT_CustomBase base value for custom ControlElements . All
values above this are reserved for custom use . Custom values
must be greater than this value .
\ sa sizeFromContents ( )
*/
/*!
\ fn QSize QStyle : : sizeFromContents ( ContentsType contents , QStyleControlElementData ceData , ControlElementFlags elementFlags , const QSize & contentsSize , const QStyleOption & opt = QStyleOption : : Default , const QWidget * widget = 0 ) const ;
Returns the size of \ a widget based on the contents size \ a
contentsSize .
\ a ceData and \ a elementFlags provide additional information about
the widget for which the PrimitiveElement is being drawn .
The \ a widget argument is a pointer to a QWidget or one of its
subclasses . The widget can be cast to the appropriate type based
on the value of \ a contents . The \ a opt argument can be used to
pass extra information required when calculating the size . Note
that \ a opt may be the default value even for ContentsTypes that
can make use of the extra options . Note that usage of \ a widget
is deprecated in favor of \ a ceData and \ a elementFlags . See the
table below for the appropriate \ a widget and \ a opt usage :
\ table
\ header \ i ContentsType \ i Widget Cast \ i Options \ i Notes
\ row \ i \ l CT_PushButton \ i ( const \ l QPushButton * ) \ i Unused . \ i & nbsp ;
\ row \ i \ l CT_CheckBox \ i ( const \ l QCheckBox * ) \ i Unused . \ i & nbsp ;
\ row \ i \ l CT_RadioButton \ i ( const \ l QRadioButton * ) \ i Unused . \ i & nbsp ;
\ row \ i \ l CT_ToolButton \ i ( const \ l QToolButton * ) \ i Unused . \ i & nbsp ;
\ row \ i \ l CT_ComboBox \ i ( const \ l QComboBox * ) \ i Unused . \ i & nbsp ;
\ row \ i \ l CT_Splitter \ i ( const \ l QSplitter * ) \ i Unused . \ i & nbsp ;
\ row \ i \ l CT_DockWindow \ i ( const \ l QDockWindow * ) \ i Unused . \ i & nbsp ;
\ row \ i \ l CT_ProgressBar \ i ( const \ l QProgressBar * ) \ i Unused . \ i & nbsp ;
\ row \ i \ l CT_PopupMenuItem \ i ( const QPopupMenu * )
\ i \ l QStyleOption ( QMenuItem * mi )
\ list
\ i opt . \ link QStyleOption : : menuItem ( ) menuItem \ endlink ( )
\ endlist
\ i \ e mi is the menu item to use when calculating the size .
QMenuItem is currently an internal class .
\ endtable
*/
/*!
\ enum QStyle : : StyleHint
This enum represents a StyleHint . A StyleHint is a general look
and / or feel hint .
\ value SH_EtchDisabledText disabled text is " etched " like Windows .
\ value SH_GUIStyle the GUI style to use .
\ value SH_ScrollBar_BackgroundMode the background mode for a
QScrollBar . Possible values are any of those in the \ link
Qt : : BackgroundMode BackgroundMode \ endlink enum .
\ value SH_ScrollBar_MiddleClickAbsolutePosition a boolean value .
If TRUE , middle clicking on a scrollbar causes the slider to
jump to that position . If FALSE , the middle clicking is
ignored .
\ value SH_ScrollBar_LeftClickAbsolutePosition a boolean value .
If TRUE , left clicking on a scrollbar causes the slider to
jump to that position . If FALSE , the left clicking will
behave as appropriate for each control .
\ value SH_ScrollBar_ScrollWhenPointerLeavesControl a boolean
value . If TRUE , when clicking a scrollbar SubControl , holding
the mouse button down and moving the pointer outside the
SubControl , the scrollbar continues to scroll . If FALSE , the
scollbar stops scrolling when the pointer leaves the
SubControl .
\ value SH_TabBar_Alignment the alignment for tabs in a
QTabWidget . Possible values are \ c Qt : : AlignLeft , \ c
Qt : : AlignCenter and \ c Qt : : AlignRight .
\ value SH_Header_ArrowAlignment the placement of the sorting
indicator may appear in list or table headers . Possible values
are \ c Qt : : Left or \ c Qt : : Right .
\ value SH_Slider_SnapToValue sliders snap to values while moving ,
like Windows
\ value SH_Slider_SloppyKeyEvents key presses handled in a sloppy
manner , i . e . left on a vertical slider subtracts a line .
\ value SH_ProgressDialog_CenterCancelButton center button on
progress dialogs , like Motif , otherwise right aligned .
\ value SH_ProgressDialog_TextLabelAlignment Qt : : AlignmentFlags - -
text label alignment in progress dialogs ; Center on windows ,
Auto | VCenter otherwise .
\ value SH_PrintDialog_RightAlignButtons right align buttons in
the print dialog , like Windows .
\ value SH_MainWindow_SpaceBelowMenuBar 1 or 2 pixel space between
the menubar and the dockarea , like Windows .
\ value SH_FontDialog_SelectAssociatedText select the text in the
line edit , or when selecting an item from the listbox , or when
the line edit receives focus , like Windows .
\ value SH_PopupMenu_AllowActiveAndDisabled allows disabled menu
items to be active .
\ value SH_PopupMenu_SpaceActivatesItem pressing Space activates
the item , like Motif .
\ value SH_PopupMenu_SubMenuPopupDelay the number of milliseconds
to wait before opening a submenu ; 256 on windows , 96 on Motif .
\ value SH_PopupMenu_Scrollable whether popupmenu ' s must support
scrolling .
\ value SH_PopupMenu_SloppySubMenus whether popupmenu ' s must support
sloppy submenu ; as implemented on Mac OS .
\ value SH_ScrollView_FrameOnlyAroundContents whether scrollviews
draw their frame only around contents ( like Motif ) , or around
contents , scrollbars and corner widgets ( like Windows ) .
\ value SH_MenuBar_AltKeyNavigation menubars items are navigable
by pressing Alt , followed by using the arrow keys to select
the desired item .
\ value SH_ComboBox_ListMouseTracking mouse tracking in combobox
dropdown lists .
\ value SH_PopupMenu_MouseTracking mouse tracking in popup menus .
\ value SH_MenuBar_MouseTracking mouse tracking in menubars .
\ value SH_ItemView_ChangeHighlightOnFocus gray out selected items
when losing focus .
\ value SH_Widget_ShareActivation turn on sharing activation with
floating modeless dialogs .
\ value SH_TabBar_SelectMouseType which type of mouse event should
cause a tab to be selected .
\ value SH_ListViewExpand_SelectMouseType which type of mouse event should
cause a listview expansion to be selected .
\ value SH_TabBar_PreferNoArrows whether a tabbar should suggest a size
to prevent scoll arrows .
\ value SH_ComboBox_Popup allows popups as a combobox dropdown
menu .
\ value SH_Workspace_FillSpaceOnMaximize the workspace should
maximize the client area .
\ value SH_TitleBar_NoBorder the titlebar has no border
\ value SH_ScrollBar_StopMouseOverSlider stops autorepeat when
slider reaches mouse
\ value SH_BlinkCursorWhenTextSelected whether cursor should blink
when text is selected
\ value SH_RichText_FullWidthSelection whether richtext selections
should extend the full width of the document .
\ value SH_GroupBox_TextLabelVerticalAlignment how to vertically align a
groupbox ' s text label .
\ value SH_GroupBox_TextLabelColor how to paint a groupbox ' s text label .
\ value SH_DialogButtons_DefaultButton which buttons gets the
default status in a dialog ' s button widget .
\ value SH_CustomBase base value for custom ControlElements . All
values above this are reserved for custom use . Therefore ,
custom values must be greater than this value .
\ value SH_ToolButton_Uses3D indicates whether QToolButtons should
use a 3 D frame when the mouse is over them
\ value SH_ToolBox_SelectedPageTitleBold Boldness of the selected
page title in a QToolBox .
\ value SH_LineEdit_PasswordCharacter The QChar Unicode character
to be used for passwords .
\ value SH_Table_GridLineColor
\ value SH_UnderlineAccelerator whether accelerators are underlined
\ sa styleHint ( )
*/
/*!
\ fn int QStyle : : styleHint ( StyleHint stylehint , QStyleControlElementData ceData , ControlElementFlags elementFlags , const QStyleOption & opt = QStyleOption : : Default , QStyleHintReturn * returnData = 0 , const QWidget * widget = 0 ) const ;
Returns the style hint \ a stylehint for \ a widget . Currently , \ a
widget , \ a opt , and \ a returnData are unused ; they ' re included to
allow for future enhancements .
\ a ceData and \ a elementFlags provide additional information about
the widget for which the PrimitiveElement is being drawn .
Note that usage of \ a widget is deprecated in favor of \ a ceData
and \ a elementFlags .
For an explanation of the return value see \ l StyleHint .
*/
/*!
\ enum QStyle : : StylePixmap
This enum represents a StylePixmap . A StylePixmap is a pixmap that
can follow some existing GUI style or guideline .
\ value SP_TitleBarMinButton minimize button on titlebars . For
example , in a QWorkspace .
\ value SP_TitleBarMaxButton maximize button on titlebars .
\ value SP_TitleBarCloseButton close button on titlebars .
\ value SP_TitleBarNormalButton normal ( restore ) button on titlebars .
\ value SP_TitleBarShadeButton shade button on titlebars .
\ value SP_TitleBarUnshadeButton unshade button on titlebars .
\ value SP_MessageBoxInformation the ' information ' icon .
\ value SP_MessageBoxWarning the ' warning ' icon .
\ value SP_MessageBoxCritical the ' critical ' icon .
\ value SP_MessageBoxQuestion the ' question ' icon .
\ value SP_DockWindowCloseButton close button on dock windows ;
see also QDockWindow .
\ value SP_CustomBase base value for custom ControlElements . All
values above this are reserved for custom use . Therefore ,
custom values must be greater than this value .
\ sa stylePixmap ( )
*/
/*!
\ fn QPixmap QStyle : : stylePixmap ( StylePixmap stylepixmap , QStyleControlElementData ceData , ControlElementFlags elementFlags , const QStyleOption & opt = QStyleOption : : Default , const QWidget * widget = 0 ) const ;
Returns a pixmap for \ a stylepixmap .
\ a ceData and \ a elementFlags provide additional information about
the widget for which the PrimitiveElement is being drawn .
The \ a opt argument can be used to pass extra information required
when drawing the ControlElement . Note that \ a opt may be the
default value even for StylePixmaps that can make use of the extra
options . Currently , the \ a opt argument is unused .
The \ a widget argument is a pointer to a QWidget or one of its
subclasses . The widget can be cast to the appropriate type based
on the value of \ a stylepixmap . Note that usage of \ a widget is
deprecated in favor of \ a ceData and \ a elementFlags . See the table
below for the appropriate \ a widget casts :
\ table
\ header \ i StylePixmap \ i Widget Cast
\ row \ i \ l SP_TitleBarMinButton \ i ( const \ l QWidget * )
\ row \ i \ l SP_TitleBarMaxButton \ i ( const \ l QWidget * )
\ row \ i \ l SP_TitleBarCloseButton \ i ( const \ l QWidget * )
\ row \ i \ l SP_TitleBarNormalButton \ i ( const \ l QWidget * )
\ row \ i \ l SP_TitleBarShadeButton \ i ( const \ l QWidget * )
\ row \ i \ l SP_TitleBarUnshadeButton \ i ( const \ l QWidget * )
\ row \ i \ l SP_DockWindowCloseButton \ i ( const \ l QDockWindow * )
\ endtable
\ sa StylePixmap
*/
/*!
\ fn QRect QStyle : : visualRect ( const QRect & logical , const QWidget * w ) ;
Returns the rect \ a logical in screen coordinates . The bounding
rect for widget \ a w is used to perform the translation . This
function is provided to aid style implementors in supporting
right - to - left mode .
Note that this function is deprecated in favor of visualRect ( const QRect & logical , const QStyleControlElementData ceData , const ControlElementFlags elementFlags ) ;
\ sa QApplication : : reverseLayout ( )
*/
QRect QStyle : : visualRect ( const QRect & logical , const QWidget * w )
{
QStyleControlElementData ceData ;
ceData . rect = w - > rect ( ) ;
return visualRect ( logical , ceData , CEF_None ) ;
}
/*!
\ fn QRect QStyle : : visualRect ( const QRect & logical , const QStyleControlElementData ceData , const ControlElementFlags elementFlags ) ;
Returns the rect \ a logical in screen coordinates . The bounding
rect for the widget described by \ a ceData and \ a elementFlags
is used to perform the translation . This function is provided to
aid style implementors in supporting
right - to - left mode .
\ sa QApplication : : reverseLayout ( )
*/
QRect QStyle : : visualRect ( const QRect & logical , const QStyleControlElementData ceData , const ControlElementFlags elementFlags )
{
Q_UNUSED ( elementFlags )
QRect boundingRect = ceData . rect ;
QRect r = logical ;
if ( QApplication : : reverseLayout ( ) )
r . moveBy ( 2 * ( boundingRect . right ( ) - logical . right ( ) ) +
logical . width ( ) - boundingRect . width ( ) , 0 ) ;
return r ;
}
/*!
\ overload QRect QStyle : : visualRect ( const QRect & logical , const QRect & bounding ) ;
Returns the rect \ a logical in screen coordinates . The rect \ a
bounding is used to perform the translation . This function is
provided to aid style implementors in supporting right - to - left
mode .
\ sa QApplication : : reverseLayout ( )
*/
QRect QStyle : : visualRect ( const QRect & logical , const QRect & boundingRect )
{
QRect r = logical ;
if ( QApplication : : reverseLayout ( ) )
r . moveBy ( 2 * ( boundingRect . right ( ) - logical . right ( ) ) +
logical . width ( ) - boundingRect . width ( ) , 0 ) ;
return r ;
}
/*!
\ fn void QStyle : : installObjectEventHandler ( QStyleControlElementData ceData , ControlElementFlags elementFlags , void * source , QStyle * handler ) ;
Intercepts events generated by \ a source and sends them to \ a handler via
the bool QStyle : : objectEventHandler ( QStyleControlElementData ceData , ControlElementFlags elementFlags , void * source , QEvent * e ) virtual method .
\ sa void QStyle : : removeObjectEventHandler ( QObject * source , QStyle * handler )
\ sa bool QStyle : : objectEventHandler ( QStyleControlElementData ceData , ControlElementFlags elementFlags , void * source , QEvent * e )
*/
void QStyle : : installObjectEventHandler ( QStyleControlElementData ceData , ControlElementFlags elementFlags , void * source , QStyle * handler ) {
bool cbret = false ;
if ( m_eventHandlerInstallationHook ) {
cbret = ( * m_eventHandlerInstallationHook ) ( ceData , elementFlags , source , handler ) ;
}
if ( ! cbret ) {
if ( ceData . widgetObjectTypes . contains ( " QObject " ) ) {
QObject * o = reinterpret_cast < QObject * > ( source ) ;
o - > installEventFilter ( this ) ;
m_objectEventSourceToHandlerMap [ source ] = handler ;
m_objectEventSourceDataToHandlerMap [ source ] = ceData ;
m_objectEventSourceFlagsToHandlerMap [ source ] = elementFlags ;
}
}
}
/*!
\ fn void QStyle : : removeObjectEventHandler ( QStyleControlElementData ceData , ControlElementFlags elementFlags , void * source , QStyle * handler ) ;
Stops intercepting events generated by \ a source .
\ sa void QStyle : : installObjectEventHandler ( QStyleControlElementData ceData , ControlElementFlags elementFlags , void * source , QStyle * handler )
*/
void QStyle : : removeObjectEventHandler ( QStyleControlElementData ceData , ControlElementFlags elementFlags , void * source , QStyle * handler ) {
bool cbret = false ;
if ( m_eventHandlerRemovalHook ) {
cbret = ( * m_eventHandlerRemovalHook ) ( ceData , elementFlags , source , handler ) ;
}
if ( ! cbret ) {
if ( ceData . widgetObjectTypes . contains ( " QObject " ) ) {
QObject * o = reinterpret_cast < QObject * > ( source ) ;
m_objectEventSourceToHandlerMap . remove ( source ) ;
m_objectEventSourceDataToHandlerMap . remove ( source ) ;
m_objectEventSourceFlagsToHandlerMap . remove ( source ) ;
o - > removeEventFilter ( this ) ;
}
}
}
/*!
\ fn void QStyle : : setEventHandlerInstallationHook ( EventHandlerInstallationHook hook ) ;
Sets a callback function \ a hook which will be called whenever a new intercept request
is made via the QStyle : : installObjectEventHandler method . The callback function must
use this definition : bool callbackFunction ( QStyleControlElementData ceData , ControlElementFlags elementFlags , void * source , QStyle * handler ) .
\ sa void QStyle : : installObjectEventHandler ( QStyleControlElementData ceData , ControlElementFlags elementFlags , void * source , QStyle * handler )
*/
void QStyle : : setEventHandlerInstallationHook ( EventHandlerInstallationHook hook ) {
m_eventHandlerInstallationHook = hook ;
}
/*!
\ fn void QStyle : : setEventHandlerRemovalHook ( EventHandlerRemovalHook hook ) ;
Sets a callback function \ a hook which will be called whenever a new intercept deactivation request
is made via the QStyle : : removeObjectEventHandler method . The callback function must
use this definition : bool callbackFunction ( QStyleControlElementData ceData , ControlElementFlags elementFlags , void * source , QStyle * handler ) .
\ sa void QStyle : : removeObjectEventHandler ( QStyleControlElementData ceData , ControlElementFlags elementFlags , void * source , QStyle * handler )
*/
void QStyle : : setEventHandlerRemovalHook ( EventHandlerRemovalHook hook ) {
m_eventHandlerRemovalHook = hook ;
}
/*!
\ fn bool QStyle : : objectEventHandler ( QStyleControlElementData ceData , ControlElementFlags elementFlags , void * source , QEvent * e ) ;
Override this virtual function to intercept events requested by a previous call to
QStyle : : installObjectEventHandler .
\ sa void QStyle : : installObjectEventHandler ( QStyleControlElementData ceData , ControlElementFlags elementFlags , void * source , QStyle * handler )
\ sa void QStyle : : removeObjectEventHandler ( QStyleControlElementData ceData , ControlElementFlags elementFlags , void * source , QStyle * handler )
*/
bool QStyle : : objectEventHandler ( QStyleControlElementData ceData , ControlElementFlags elementFlags , void * source , QEvent * e ) {
Q_UNUSED ( ceData ) ;
Q_UNUSED ( elementFlags ) ;
Q_UNUSED ( source ) ;
Q_UNUSED ( e ) ;
return false ;
}
/*!
\ fn bool QStyle : : eventFilter ( QObject * o , QEvent * e ) ;
\ internal
*/
bool QStyle : : eventFilter ( QObject * o , QEvent * e ) {
acceleratorKeypressEventMonitor ( o , e ) ;
if ( m_objectEventSourceToHandlerMap . contains ( o ) ) {
QStyle * handler = m_objectEventSourceToHandlerMap [ o ] ;
QStyleControlElementData ceData = m_objectEventSourceDataToHandlerMap [ o ] ;
ControlElementFlags elementFlags = m_objectEventSourceFlagsToHandlerMap [ o ] ;
bool ret = handler - > objectEventHandler ( ceData , elementFlags , o , e ) ;
if ( ret ) {
return ret ;
}
else {
return QObject : : eventFilter ( o , e ) ;
}
}
else {
return QObject : : eventFilter ( o , e ) ;
}
}
/*!
\ fn void QStyle : : setWidgetActionRequestHook ( WidgetActionRequestHook hook ) ;
Sets a callback function \ a hook which will be called whenever a new widget action request
is made via the QStyle : : installObjectEventHandler method . The callback function must
use this definition : bool callbackFunction ( QStyleControlElementData ceData , ControlElementFlags elementFlags , void * source , QStyle * handler ) .
\ sa void QStyle : : installObjectEventHandler ( QStyleControlElementData ceData , ControlElementFlags elementFlags , void * source , QStyle * handler )
*/
void QStyle : : setWidgetActionRequestHook ( WidgetActionRequestHook hook ) {
m_widgetActionRequestHook = hook ;
}
/*!
\ fn bool widgetActionRequestHandler ( QStyleControlElementData ceData , ControlElementFlags elementFlags , void * source , WidgetActionRequest request ) ;
Handles widget action requests . Return FALSE to continue processing in base classes , TRUE to eat the request and halt processing .
*/
bool QStyle : : widgetActionRequest ( QStyleControlElementData ceData , ControlElementFlags elementFlags , void * source , WidgetActionRequest request , QStyleWidgetActionRequestData requestData ) {
bool cbret = false ;
if ( m_widgetActionRequestHook ) {
cbret = ( * m_widgetActionRequestHook ) ( ceData , elementFlags , source , request , requestData ) ;
}
if ( ! cbret ) {
if ( ceData . widgetObjectTypes . contains ( " QWidget " ) ) {
QWidget * widget = reinterpret_cast < QWidget * > ( source ) ;
if ( request = = WAR_Repaint ) {
widget - > repaint ( FALSE ) ;
}
else if ( request = = WAR_RepaintRect ) {
widget - > repaint ( requestData . rect , FALSE ) ;
}
else if ( request = = WAR_EnableMouseTracking ) {
widget - > setMouseTracking ( TRUE ) ;
}
else if ( request = = WAR_DisableMouseTracking ) {
widget - > setMouseTracking ( FALSE ) ;
}
else if ( request = = WAR_SetCheckable ) {
QPopupMenu * pm = dynamic_cast < QPopupMenu * > ( widget ) ;
if ( pm ) {
pm - > setCheckable ( TRUE ) ;
}
}
else if ( request = = WAR_UnSetCheckable ) {
QPopupMenu * pm = dynamic_cast < QPopupMenu * > ( widget ) ;
if ( pm ) {
pm - > setCheckable ( FALSE ) ;
}
}
else if ( request = = WAR_FrameSetStyle ) {
QFrame * frame = dynamic_cast < QFrame * > ( widget ) ;
if ( frame ) {
frame - > setFrameStyle ( requestData . metric1 ) ;
}
}
else if ( request = = WAR_FrameSetLineWidth ) {
QFrame * frame = dynamic_cast < QFrame * > ( widget ) ;
if ( frame ) {
frame - > setLineWidth ( requestData . metric1 ) ;
}
}
else if ( request = = WAR_SetLayoutMargin ) {
QLayout * layout = widget - > layout ( ) ;
if ( layout ) {
layout - > setMargin ( requestData . metric1 ) ;
}
}
else if ( request = = WAR_SetPalette ) {
widget - > setPalette ( requestData . palette ) ;
}
else if ( request = = WAR_SetBackgroundMode ) {
widget - > setBackgroundMode ( ( Qt : : BackgroundMode ) requestData . metric1 ) ;
}
else if ( request = = WAR_SetFont ) {
widget - > setFont ( requestData . font ) ;
}
else if ( request = = WAR_RepaintAllAccelerators ) {
QWidgetList * list = QApplication : : topLevelWidgets ( ) ;
QWidgetListIt it ( * list ) ;
QWidget * widget ;
while ( ( widget = it . current ( ) ) ! = 0 ) {
+ + it ;
QObjectList * l = widget - > queryList ( " QWidget " ) ;
QObjectListIt it2 ( * l ) ;
QWidget * w ;
while ( ( w = ( QWidget * ) it2 . current ( ) ) ! = 0 ) {
+ + it2 ;
if ( w - > isTopLevel ( ) | | ! w - > isVisible ( ) | | w - > style ( ) . styleHint ( SH_UnderlineAccelerator , QStyleControlElementData ( ) , CEF_None , w ) ) {
l - > removeRef ( w ) ;
}
}
// Repaint all relevant widgets
it2 . toFirst ( ) ;
while ( ( w = ( QWidget * ) it2 . current ( ) ) ! = 0 ) {
+ + it2 ;
w - > repaint ( FALSE ) ;
}
delete l ;
}
delete list ;
}
return true ;
}
}
return true ;
}
void QStyle : : acceleratorKeypressEventMonitor ( QObject * o , QEvent * e ) {
// RAJA FIXME
// Also, SH_HideUnderlineAcceleratorWhenAltUp should probably be set to 1 in the QWindowsStyle::styleHint overridden method
// Additionally, the common styleHint code in TDE (that controls popupmenu settings and such via configuration files) needs to be modified to add a config option for this new style hint
if ( styleHint ( SH_HideUnderlineAcceleratorWhenAltUp , QStyleControlElementData ( ) , CEF_None , QStyleOption : : Default , NULL , NULL ) ! = 0 ) {
QWidget * widget = dynamic_cast < QWidget * > ( o ) ;
if ( widget ) {
switch ( e - > type ( ) ) {
case QEvent : : KeyPress :
if ( ( ( QKeyEvent * ) e ) - > key ( ) = = Key_Alt ) {
conditionalAcceleratorsEnabled = true ;
widgetActionRequest ( QStyleControlElementData ( ) , CEF_None , o , WAR_RepaintAllAccelerators ) ;
}
break ;
case QEvent : : KeyRelease :
if ( ( ( QKeyEvent * ) e ) - > key ( ) = = Key_Alt ) {
conditionalAcceleratorsEnabled = false ;
widgetActionRequest ( QStyleControlElementData ( ) , CEF_None , o , WAR_RepaintAllAccelerators ) ;
}
break ;
default :
break ;
}
}
}
else {
conditionalAcceleratorsEnabled = false ;
}
}
bool QStyle : : acceleratorsShown ( ) const {
if ( styleHint ( SH_HideUnderlineAcceleratorWhenAltUp , QStyleControlElementData ( ) , CEF_None , QStyleOption : : Default , NULL , NULL ) ! = 0 ) {
return conditionalAcceleratorsEnabled ;
}
else {
return true ;
}
}
QStyleWidgetActionRequestData : : QStyleWidgetActionRequestData ( ) {
//
}
QStyleWidgetActionRequestData : : QStyleWidgetActionRequestData ( int param1 , int param2 ) {
metric1 = param1 ;
metric2 = param2 ;
}
QStyleWidgetActionRequestData : : QStyleWidgetActionRequestData ( QPalette param ) {
palette = param ;
}
QStyleWidgetActionRequestData : : QStyleWidgetActionRequestData ( QFont param ) {
font = param ;
}
QStyleWidgetActionRequestData : : QStyleWidgetActionRequestData ( QRect param ) {
rect = param ;
}
QStyleWidgetActionRequestData : : ~ QStyleWidgetActionRequestData ( ) {
//
}
// ============================================================================================
// Interface methods
// ============================================================================================
void QStyle : : drawPrimitive ( PrimitiveElement pe ,
QPainter * p ,
const QRect & r ,
const QColorGroup & cg ,
SFlags flags ,
const QStyleOption & opt ) const
{
const QWidget * widget = 0 ;
// Determine if the request needs widget information and set widget appropriately
// FIXME
if ( ( pe = = PE_CheckListController ) | | ( pe = = PE_CheckListExclusiveIndicator ) | | ( pe = = PE_CheckListIndicator ) ) {
QCheckListItem * item = opt . checkListItem ( ) ;
if ( item ) {
QListView * lv = item - > listView ( ) ;
widget = dynamic_cast < QWidget * > ( lv ) ;
}
}
QStyleControlElementData ceData = populateControlElementDataFromWidget ( widget , QStyleOption ( ) ) ;
drawPrimitive ( pe , p , ceData , getControlElementFlagsForObject ( widget , ceData . widgetObjectTypes , QStyleOption ( ) ) , r , cg , flags , opt ) ;
}
void QStyle : : drawControl ( ControlElement element ,
QPainter * p ,
const QWidget * widget ,
const QRect & r ,
const QColorGroup & cg ,
SFlags flags ,
const QStyleOption & opt ) const
{
# if defined(QT_CHECK_STATE)
if ( ! widget ) {
qWarning ( " QStyle::drawControl: widget parameter cannot be zero! " ) ;
return ;
}
# endif
QStyleControlElementData ceData = populateControlElementDataFromWidget ( widget , opt ) ;
drawControl ( element , p , ceData , getControlElementFlagsForObject ( widget , ceData . widgetObjectTypes , opt ) , r , cg , flags , opt , widget ) ;
}
void QStyle : : drawControlMask ( ControlElement control ,
QPainter * p ,
const QWidget * widget ,
const QRect & r ,
const QStyleOption & opt ) const
{
QStyleControlElementData ceData = populateControlElementDataFromWidget ( widget , opt ) ;
drawControlMask ( control , p , ceData , getControlElementFlagsForObject ( widget , ceData . widgetObjectTypes , opt ) , r , opt , widget ) ;
}
QRect QStyle : : subRect ( SubRect r , const QWidget * widget ) const
{
# if defined(QT_CHECK_STATE)
if ( ! widget ) {
qWarning ( " QStyle::subRect: widget parameter cannot be zero! " ) ;
return QRect ( ) ;
}
# endif
QStyleControlElementData ceData = populateControlElementDataFromWidget ( widget , QStyleOption ( ) ) ;
return subRect ( r , ceData , getControlElementFlagsForObject ( widget , ceData . widgetObjectTypes , QStyleOption ( ) ) , widget ) ;
}
void QStyle : : drawComplexControl ( ComplexControl control ,
QPainter * p ,
const QWidget * widget ,
const QRect & r ,
const QColorGroup & cg ,
SFlags flags ,
SCFlags controls ,
SCFlags active ,
const QStyleOption & opt ) const
{
# if defined(QT_CHECK_STATE)
if ( ! widget ) {
qWarning ( " QStyle::drawComplexControl: widget parameter cannot be zero! " ) ;
return ;
}
# endif
QStyleControlElementData ceData = populateControlElementDataFromWidget ( widget , QStyleOption ( ) ) ;
drawComplexControl ( control , p , ceData , getControlElementFlagsForObject ( widget , ceData . widgetObjectTypes , QStyleOption ( ) ) , r , cg , flags , controls , active , opt , widget ) ;
}
void QStyle : : drawComplexControlMask ( ComplexControl control ,
QPainter * p ,
const QWidget * widget ,
const QRect & r ,
const QStyleOption & opt ) const
{
QStyleControlElementData ceData = populateControlElementDataFromWidget ( widget , QStyleOption ( ) ) ;
drawComplexControlMask ( control , p , ceData , getControlElementFlagsForObject ( widget , ceData . widgetObjectTypes , QStyleOption ( ) ) , r , opt , widget ) ;
}
QRect QStyle : : querySubControlMetrics ( ComplexControl control ,
const QWidget * widget ,
SubControl sc ,
const QStyleOption & opt ) const
{
# if defined(QT_CHECK_STATE)
if ( ! widget ) {
qWarning ( " QStyle::querySubControlMetrics: widget parameter cannot be zero! " ) ;
return QRect ( ) ;
}
# endif
QStyleControlElementData ceData = populateControlElementDataFromWidget ( widget , QStyleOption ( ) , false ) ;
return querySubControlMetrics ( control , ceData , getControlElementFlagsForObject ( widget , ceData . widgetObjectTypes , QStyleOption ( ) ) , sc , opt , widget ) ;
}
QStyle : : SubControl QStyle : : querySubControl ( ComplexControl control ,
const QWidget * widget ,
const QPoint & pos ,
const QStyleOption & opt ) const
{
QStyleControlElementData ceData = populateControlElementDataFromWidget ( widget , opt ) ;
return querySubControl ( control , ceData , getControlElementFlagsForObject ( widget , ceData . widgetObjectTypes , opt ) , pos , opt , widget ) ;
}
int QStyle : : pixelMetric ( PixelMetric m , const QWidget * widget ) const
{
QStyleControlElementData ceData = populateControlElementDataFromWidget ( widget , QStyleOption ( ) ) ;
return pixelMetric ( m , ceData , getControlElementFlagsForObject ( widget , ceData . widgetObjectTypes , QStyleOption ( ) ) , widget ) ;
}
QSize QStyle : : sizeFromContents ( ContentsType contents ,
const QWidget * widget ,
const QSize & contentsSize ,
const QStyleOption & opt ) const
{
QSize sz ( contentsSize ) ;
# if defined(QT_CHECK_STATE)
if ( ! widget ) {
qWarning ( " QStyle::sizeFromContents: widget parameter cannot be zero! " ) ;
return sz ;
}
# endif
QStyleControlElementData ceData = populateControlElementDataFromWidget ( widget , QStyleOption ( ) ) ;
return sizeFromContents ( contents , ceData , getControlElementFlagsForObject ( widget , ceData . widgetObjectTypes , QStyleOption ( ) ) , contentsSize , opt , widget ) ;
}
int QStyle : : styleHint ( StyleHint sh , const QWidget * w , const QStyleOption & so , QStyleHintReturn * shr ) const
{
QStyleControlElementData ceData = populateControlElementDataFromWidget ( w , QStyleOption ( ) , false ) ;
return styleHint ( sh , ceData , getControlElementFlagsForObject ( w , ceData . widgetObjectTypes , QStyleOption ( ) , false ) , so , shr , w ) ;
}
QPixmap QStyle : : stylePixmap ( StylePixmap sp , const QWidget * w , const QStyleOption & so ) const
{
QStyleControlElementData ceData = populateControlElementDataFromWidget ( w , QStyleOption ( ) ) ;
return stylePixmap ( sp , ceData , getControlElementFlagsForObject ( w , ceData . widgetObjectTypes , QStyleOption ( ) ) , so , w ) ;
}
/*!
\ fn int QStyle : : defaultFrameWidth ( ) const
\ obsolete
*/
/*!
\ fn void QStyle : : tabbarMetrics ( const QWidget * , int & , int & , int & ) const
\ obsolete
*/
/*!
\ fn QSize QStyle : : scrollBarExtent ( ) const
\ obsolete
*/
# endif // QT_NO_STYLE