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.