|
|
|
/****************************************************************************
|
|
|
|
**
|
|
|
|
** 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;
|
|
|
|
m_applicationActionRequestHook = 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 = populateControlElementDataFromApplication(app, QStyleOption());
|
|
|
|
applicationPolish(ceData, getControlElementFlagsForObject(app, ceData.widgetObjectTypes, QStyleOption()), app);
|
|
|
|
}
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\overload
|
|
|
|
|
|
|
|
Undoes the application polish.
|
|
|
|
|
|
|
|
\sa polish()
|
|
|
|
*/
|
|
|
|
void QStyle::unPolish( QApplication *app ) {
|
|
|
|
QStyleControlElementData ceData = populateControlElementDataFromApplication(app, QStyleOption());
|
|
|
|
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
|
|
|
|
\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
|
|
|
|
\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
|
|
|
|
\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
|
|
|
|
\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
|
|
|
|
\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
|
|
|
|
\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
|
|
|
|
\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
|
|
|
|
|
|
|
|
\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
|
|
|
|
|
|
|
|
\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
|
|
|
|
\row \i \l CT_CheckBox \i (const \l QCheckBox *) \i Unused. \i
|
|
|
|
\row \i \l CT_RadioButton \i (const \l QRadioButton *) \i Unused. \i
|
|
|
|
\row \i \l CT_ToolButton \i (const \l QToolButton *) \i Unused. \i
|
|
|
|
\row \i \l CT_ComboBox \i (const \l QComboBox *) \i Unused. \i
|
|
|
|
\row \i \l CT_Splitter \i (const \l QSplitter *) \i Unused. \i
|
|
|
|
\row \i \l CT_DockWindow \i (const \l QDockWindow *) \i Unused. \i
|
|
|
|
\row \i \l CT_ProgressBar \i (const \l QProgressBar *) \i Unused. \i
|
|
|
|
\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 3D 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_SetAutoMask) {
|
|
|
|
widget->setAutoMask(TRUE);
|
|
|
|
}
|
|
|
|
else if (request == WAR_UnSetAutoMask) {
|
|
|
|
widget->setAutoMask(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_SetBackgroundOrigin) {
|
|
|
|
widget->setBackgroundOrigin((QWidget::BackgroundOrigin)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;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\fn void QStyle::setApplicationActionRequestHook( ApplicationActionRequestHook hook );
|
|
|
|
|
|
|
|
Sets a callback function \a hook which will be called whenever a new application 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::setApplicationActionRequestHook( ApplicationActionRequestHook hook ) {
|
|
|
|
m_applicationActionRequestHook = hook;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\fn bool applicationActionRequestHandler( QStyleControlElementData ceData, ControlElementFlags elementFlags, void* source, ApplicationActionRequest request );
|
|
|
|
|
|
|
|
Handles application action requests. Return FALSE to continue processing in base classes, TRUE to eat the request and halt processing.
|
|
|
|
*/
|
|
|
|
bool QStyle::applicationActionRequest( QStyleControlElementData ceData, ControlElementFlags elementFlags, void* source, ApplicationActionRequest request, QStyleApplicationActionRequestData requestData ) {
|
|
|
|
bool cbret = false;
|
|
|
|
if (m_applicationActionRequestHook) {
|
|
|
|
cbret = (*m_applicationActionRequestHook)(ceData, elementFlags, source, request, requestData);
|
|
|
|
}
|
|
|
|
if (!cbret) {
|
|
|
|
if (ceData.widgetObjectTypes.contains("QApplication")) {
|
|
|
|
QApplication* application = reinterpret_cast<QApplication*>(source);
|
|
|
|
if (request == AAR_SetPalette) {
|
|
|
|
application->setPalette(requestData.palette, requestData.bool1, requestData.cstr);
|
|
|
|
}
|
|
|
|
else if (request == AAR_SetFont) {
|
|
|
|
application->setFont(requestData.font, requestData.bool1, requestData.cstr);
|
|
|
|
}
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
void QStyle::acceleratorKeypressEventMonitor( QObject *o, QEvent *e ) {
|
|
|
|
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, bool informWidgets, const char* className) {
|
|
|
|
palette = param;
|
|
|
|
bool1 = informWidgets;
|
|
|
|
cstr = className;
|
|
|
|
}
|
|
|
|
|
|
|
|
QStyleWidgetActionRequestData::QStyleWidgetActionRequestData(QFont param, bool informWidgets, const char* className) {
|
|
|
|
font = param;
|
|
|
|
bool1 = informWidgets;
|
|
|
|
cstr = className;
|
|
|
|
}
|
|
|
|
|
|
|
|
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, opt);
|
|
|
|
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, opt);
|
|
|
|
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, opt);
|
|
|
|
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, opt, 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, opt);
|
|
|
|
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, so, 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, so);
|
|
|
|
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
|