Auf dieser Seite

QSplitterHandle Class

Die Klasse „QSplitterHandle“ stellt Handle-Funktionalität für den Splitter bereit. Mehr...

Header: #include <QSplitterHandle>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Erbt von: QWidget

Öffentliche Funktionen

QSplitterHandle(Qt::Orientation orientation, QSplitter *parent)
virtual ~QSplitterHandle()
bool opaqueResize() const
Qt::Orientation orientation() const
void setOrientation(Qt::Orientation orientation)
QSplitter *splitter() const

Neu implementierte öffentliche Funktionen

virtual QSize sizeHint() const override

Geschützte Funktionen

int closestLegalPosition(int pos)
void moveSplitter(int pos)

Neu implementierte geschützte Funktionen

virtual bool event(QEvent *event) override
virtual void mouseMoveEvent(QMouseEvent *e) override
virtual void mousePressEvent(QMouseEvent *e) override
virtual void mouseReleaseEvent(QMouseEvent *e) override
virtual void paintEvent(QPaintEvent *) override
virtual void resizeEvent(QResizeEvent *event) override

Ausführliche Beschreibung

QSplitterHandle ist in der Regel das, woran man denkt, wenn man an einen Splitter denkt. Es handelt sich um den Griff, mit dem die Größe der Widgets angepasst wird.

Ein typischer Entwickler, der „ QSplitter “ verwendet, muss sich nie Gedanken über „QSplitterHandle“ machen. Es steht Entwicklern zur Verfügung, die Splitter-Handles mit zusätzlichen Funktionen wie Popup-Menüs wünschen.

Die übliche Vorgehensweise zum Erstellen von Splitter-Handles besteht darin, eine Unterklasse von ` QSplitter ` zu erstellen und anschließend ` QSplitter::createHandle()` neu zu implementieren, um das benutzerdefinierte Splitter-Handle zu instanziieren. Eine minimale Unterklasse von ` QSplitter ` könnte beispielsweise wie folgt aussehen:

class Splitter : public QSplitter
{
public:
    Splitter(Qt::Orientation orientation, QWidget *parent = nullptr);

protected:
    QSplitterHandle *createHandle() override;
};

Die Implementierung von ` createHandle()` erstellt einfach ein benutzerdefiniertes Splitter-Handle, das in diesem Beispiel ` Splitter ` heißt:

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

Informationen zu einem bestimmten Handle lassen sich mithilfe von Funktionen wie ` orientation()` und ` opaqueResize()` abrufen und werden vom übergeordneten Splitter bezogen. Anhand solcher Details können benutzerdefinierte Handles je nach Ausrichtung des Splitters unterschiedlich dargestellt werden.

Die Komplexität einer benutzerdefinierten Handle-Unterklasse hängt von den Aufgaben ab, die sie ausführen muss. Eine einfache Unterklasse könnte lediglich eine Implementierung von ` paintEvent()` bereitstellen:

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 diesem Beispiel wird ein vordefinierter Farbverlauf je nach Ausrichtung des Handles unterschiedlich dargestellt. `QSplitterHandle` liefert einen angemessenen Größenhinweis für das Handle, sodass die Unterklasse keine Neuimplementierung von ` sizeHint()` bereitstellen muss, es sei denn, das Handle hat besondere Größenanforderungen.

Siehe auch ` QSplitter`.

Dokumentation zu den Member-Funktionen

[explicit] QSplitterHandle::QSplitterHandle(Qt::Orientation orientation, QSplitter *parent)

Erstellt ein „ QSplitter “-Handle mit den angegebenen Werten für „ orientation “ und „ parent “.

[virtual noexcept] QSplitterHandle::~QSplitterHandle()

Destruktor.

[protected] int QSplitterHandle::closestLegalPosition(int pos)

Gibt die nächstgelegene zulässige Position des Splitter-Handles in Bezug auf „ pos “ zurück. Die Positionen werden vom linken oder oberen Rand des Splitters aus gemessen, auch bei Sprachen, die von rechts nach links geschrieben werden.

Siehe auch „ QSplitter::closestLegalPosition()“ und „ moveSplitter()“.

[override virtual protected] bool QSplitterHandle::event(QEvent *event)

Umsetzt: ` QWidget::event(QEvent *event)`.

[override virtual protected] void QSplitterHandle::mouseMoveEvent(QMouseEvent *e)

Implementiert: ` QWidget::mouseMoveEvent` (`QMouseEvent *event`).

[override virtual protected] void QSplitterHandle::mousePressEvent(QMouseEvent *e)

Implementiert: ` QWidget::mousePressEvent` (`QMouseEvent *event`).

[override virtual protected] void QSplitterHandle::mouseReleaseEvent(QMouseEvent *e)

Implementiert: QWidget::mouseReleaseEvent(QMouseEvent *event).

[protected] void QSplitterHandle::moveSplitter(int pos)

Weist den Splitter an, diesen Griff an die Position pos zu verschieben, wobei es sich um den Abstand vom linken oder oberen Rand des Widgets handelt.

Beachten Sie, dass „ pos “ bei Sprachen, die von rechts nach links geschrieben werden, ebenfalls von links (bzw. oben) aus gemessen wird. Diese Funktion ordnet „ pos “ der entsprechenden Position zu, bevor „ QSplitter::moveSplitter()“ aufgerufen wird.

Siehe auch „ QSplitter::moveSplitter()“ und „ closestLegalPosition()“.

bool QSplitterHandle::opaqueResize() const

Gibt „ true “ zurück, wenn die Größe der Widgets während der interaktiven Verschiebung des Trennbalkens dynamisch (undurchsichtig) angepasst wird. Andernfalls wird „ false “ zurückgegeben. Dieser Wert wird durch die Eigenschaft „ QSplitter “ gesteuert.

Siehe auch ` QSplitter::opaqueResize()`.

Qt::Orientation QSplitterHandle::orientation() const

Gibt die Ausrichtung des Handles zurück. Diese wird in der Regel von „ QSplitter “ übernommen.

Siehe auch ` setOrientation()` und ` QSplitter::orientation()`.

[override virtual protected] void QSplitterHandle::paintEvent(QPaintEvent *)

Umsetzt: ` QWidget::paintEvent` (`QPaintEvent *event`).

[override virtual protected] void QSplitterHandle::resizeEvent(QResizeEvent *event)

Implementiert: ` QWidget::resizeEvent(QResizeEvent *event)`.

void QSplitterHandle::setOrientation(Qt::Orientation orientation)

Legt die Ausrichtung des Splitter-Griffs auf „ orientation “ fest. Diese wird in der Regel von „ QSplitter “ übernommen.

Siehe auch „ orientation()“ und „ QSplitter::setOrientation()“.

[override virtual] QSize QSplitterHandle::sizeHint() const

Implementiert eine Zugriffsfunktion für die Eigenschaft „ QWidget::sizeHint “ neu.

QSplitter *QSplitterHandle::splitter() const

Gibt den Splitter zurück, der diesem Splitter-Handle zugeordnet ist.

Siehe auch „ QSplitter::handle()“.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.