Table Of Contents

Previous topic

QStackedWidget

Next topic

QSplitter

QSplitterHandle

Inheritance diagram of QSplitterHandle

Synopsis

Functions

Detailed Description

The PySide.QtGui.QSplitterHandle class provides handle functionality of the splitter.

PySide.QtGui.QSplitterHandle is typically what people think about when they think about a splitter. It is the handle that is used to resize the widgets.

A typical developer using PySide.QtGui.QSplitter will never have to worry about PySide.QtGui.QSplitterHandle . It is provided for developers who want splitter handles that provide extra features, such as popup menus.

The typical way one would create splitter handles is to subclass PySide.QtGui.QSplitter then reimplement QSplitter.createHandle() to instantiate the custom splitter handle. For example, a minimum PySide.QtGui.QSplitter subclass might look like this:

class Splitter(QSplitter):
    def __init__(self, orientation, parent):
        ...

    def createHandle(self):
        ...
}

The PySide.QtGui.QSplitter.createHandle() implementation simply constructs a custom splitter handle, called Splitter in this example:

QSplitterHandle *Splitter::createHandle()
{
    return new SplitterHandle(orientation(), this);
}

Information about a given handle can be obtained using functions like PySide.QtGui.QSplitterHandle.orientation() and PySide.QtGui.QSplitterHandle.opaqueResize() , and is retrieved from its parent splitter. Details like these can be used to give custom handles different appearances depending on the splitter’s orientation.

The complexity of a custom handle subclass depends on the tasks that it needs to perform. A simple subclass might only provide a PySide.QtGui.QSplitterHandle.paintEvent() implementation:

void SplitterHandle::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);
    if (orientation() == Qt::Horizontal) {
        gradient.setStart(rect().left(), rect().height()/2);
        gradient.setFinalStop(rect().right(), rect().height()/2);
    } else {
        gradient.setStart(rect().width()/2, rect().top());
        gradient.setFinalStop(rect().width()/2, rect().bottom());
    }
    painter.fillRect(event->rect(), QBrush(gradient));
}

In this example, a predefined gradient is set up differently depending on the orientation of the handle. PySide.QtGui.QSplitterHandle provides a reasonable size hint for the handle, so the subclass does not need to provide a reimplementation of PySide.QtGui.QSplitterHandle.sizeHint() unless the handle has special size requirements.

class PySide.QtGui.QSplitterHandle(o, parent)
Parameters:
PySide.QtGui.QSplitterHandle.closestLegalPosition(p)
Parameters:pPySide.QtCore.int
Return type:PySide.QtCore.int

Returns the closest legal position to pos of the splitter handle. The positions are measured from the left or top edge of the splitter, even for right-to-left languages.

PySide.QtGui.QSplitterHandle.moveSplitter(p)
Parameters:pPySide.QtCore.int

Tells the splitter to move this handle to position pos , which is the distance from the left or top edge of the widget.

Note that pos is also measured from the left (or top) for right-to-left languages. This function will map pos to the appropriate position before calling QSplitter.moveSplitter() .

PySide.QtGui.QSplitterHandle.opaqueResize()
Return type:PySide.QtCore.bool

Returns true if widgets are resized dynamically (opaquely), otherwise returns false. This value is controlled by the PySide.QtGui.QSplitter .

PySide.QtGui.QSplitterHandle.orientation()
Return type:PySide.QtCore.Qt.Orientation

Returns the handle’s orientation. This is usually propagated from the PySide.QtGui.QSplitter .

PySide.QtGui.QSplitterHandle.setOrientation(o)
Parameters:oPySide.QtCore.Qt.Orientation
PySide.QtGui.QSplitterHandle.splitter()
Return type:PySide.QtGui.QSplitter

Returns the splitter associated with this splitter handle.