QSplitterHandle Class

Die Klasse QSplitterHandle bietet Handle-Funktionalität für den Splitter. Mehr...

Kopfzeile: #include <QSplitterHandle>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Vererbungen: 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

Reimplementierte öffentliche Funktionen

virtual QSize sizeHint() const override

Geschützte Funktionen

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

Reimplementierte 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

Detaillierte Beschreibung

QSplitterHandle ist typischerweise das, woran die Leute denken, wenn sie an einen Splitter denken. Es ist das Handle, das zur Größenänderung der Widgets verwendet wird.

Ein typischer Entwickler, der QSplitter verwendet, wird sich nie um QSplitterHandle kümmern müssen. Es wird für Entwickler bereitgestellt, die Splitter-Handles mit zusätzlichen Funktionen wie Popup-Menüs benötigen.

Die typische Art und Weise, wie man Splitter-Handles erstellt, besteht darin, die Subklasse QSplitter zu erstellen und dann QSplitter::createHandle() neu zu implementieren, um das benutzerdefinierte Splitter-Handle zu instanziieren. Eine minimale QSplitter Unterklasse könnte zum Beispiel so aussehen:

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

protected:
    QSplitterHandle *createHandle() override;
};

Die Implementierung createHandle() erstellt einfach ein benutzerdefiniertes Splitter-Handle, in diesem Beispiel Splitter genannt:

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

Informationen über ein bestimmtes Handle können mit Funktionen wie orientation() und opaqueResize() abgerufen werden und werden von seinem übergeordneten Splitter abgerufen. Details wie diese können verwendet werden, um benutzerdefinierten Handles je nach Ausrichtung des Splitters ein unterschiedliches Erscheinungsbild zu geben.

Die Komplexität einer Unterklasse für benutzerdefinierte Handles hängt von den Aufgaben ab, die sie erfüllen muss. Eine einfache Unterklasse bietet möglicherweise nur eine paintEvent()-Implementierung:

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 abhängig von der Ausrichtung des Handles unterschiedlich eingestellt. QSplitterHandle bietet einen vernünftigen Größenhinweis für das Handle, so dass die Unterklasse keine Reimplementierung von sizeHint() bereitstellen muss, es sei denn, das Handle hat spezielle Größenanforderungen.

Siehe auch QSplitter.

Dokumentation der Mitgliedsfunktionen

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

Erzeugt ein QSplitter -Handle mit den angegebenen orientation und parent.

[virtual noexcept] QSplitterHandle::~QSplitterHandle()

Zerstörer.

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

Gibt die nächstgelegene legale Position des Splittergriffs an pos zurück. Die Positionen werden von der linken oder oberen Kante des Splitters aus gemessen, auch bei Sprachen mit Rechts-nach-Links-Ausrichtung.

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

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

Reimplements: QWidget::event(QEvent *Event).

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

Reimplements: QWidget::mouseMoveEvent(QMouseEvent *event).

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

Reimplements: QWidget::mousePressEvent(QMouseEvent *event).

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

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

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

Weist den Splitter an, diesen Griff an die Position pos zu verschieben, die den Abstand vom linken oder oberen Rand des Widgets angibt.

Beachten Sie, dass pos auch von links (oder oben) für Rechts-nach-Links-Sprachen gemessen wird. Diese Funktion ordnet pos der entsprechenden Position zu, bevor sie QSplitter::moveSplitter() aufruft.

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

bool QSplitterHandle::opaqueResize() const

Gibt true zurück, wenn die Größe der Widgets dynamisch (undurchsichtig) geändert wird, während der Splitter interaktiv bewegt wird. Andernfalls wird false zurückgegeben. Dieser Wert wird durch die QSplitter gesteuert.

Siehe auch QSplitter::opaqueResize().

Qt::Orientation QSplitterHandle::orientation() const

Gibt die Ausrichtung des Griffs zurück. Diese wird normalerweise von QSplitter weitergegeben.

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

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

Reimplements: QWidget::paintEvent(QPaintEvent *event).

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

Reimplements: QWidget::resizeEvent(QResizeEvent *event).

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

Setzt die Ausrichtung des Splittergriffs auf orientation. Dies wird normalerweise von QSplitter weitergegeben.

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

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

Reimplantiert eine Zugriffsfunktion für die Eigenschaft: QWidget::sizeHint.

QSplitter *QSplitterHandle::splitter() const

Gibt den mit diesem Splitter-Handle verbundenen Splitter zurück.

Siehe auch QSplitter::handle().

© 2025 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.