QSplitterHandle Class

QSplitterHandle クラスは、スプリッタのハンドル機能を提供します。詳細...

ヘッダ #include <QSplitterHandle>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
継承: QWidget

パブリック関数

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

再実装パブリック関数

virtual QSize sizeHint() const override

保護された関数

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

再実装された保護された関数

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

詳細説明

QSplitterHandle は、一般的にスプリッタについて考えるときに思い浮かべるものです。これは、ウィジェットのサイズを変更するために使用されるハンドルです。

QSplitter を使用する一般的な開発者は、QSplitterHandle を気にする必要はありません。これは、ポップアップメニューのような追加機能を提供するスプリッターハンドルが欲しい開発者のために提供されています。

スプリッターハンドルを作成する典型的な方法は、QSplitter をサブクラス化し、QSplitter::createHandle() を再実装してカスタムスプリッターハンドルをインスタンス化することです。たとえば、最小限のQSplitter サブクラスは次のようになります:

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

protected:
    QSplitterHandle *createHandle() override;
};

createHandle() の実装は、単純にカスタムスプリッターハンドルを構築します。 この例ではSplitter と呼ばれます:

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

与えられたハンドルに関する情報は、orientation() やopaqueResize() のような関数を使って得ることができ、その親スプリッタから取得されます。これらのような詳細は、スプリッタの向きによって異なる外観をカスタムハンドルに与えるために使うことができます。

カスタムハンドルのサブクラスの複雑さは、それが実行する必要のあるタスクに依存します。単純なサブクラスはpaintEvent() の実装だけを提供するかもしれません:

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));
}

この例では、定義済みのグラデーションがハンドルの向きによって異なるように設定されます。QSplitterHandle はハンドルの妥当なサイズのヒントを提供するので、ハンドルに特別なサイズ要件がない限り、サブクラスはsizeHint() の再実装を提供する必要はありません。

QSplitterも参照してください

メンバ関数ドキュメント

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

与えられたorientationparentQSplitter ハンドルを作成する。

[virtual noexcept] QSplitterHandle::~QSplitterHandle()

破壊者。

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

スプリッターハンドルのpos に最も近い法的位置を返します。右から左への言語の場合でも、位置はスプリッタの左端または上端から計測されます。

QSplitter::closestLegalPosition() およびmoveSplitter()も参照

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

再実装:QWidget::event(QEvent *event)。

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

再実装:QWidget::mouseMoveEvent(QMouseEvent *event)。

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

再実装:QWidget::mousePressEvent(QMouseEvent *event)。

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

再実装:QWidget::mouseReleaseEvent(QMouseEvent *event)。

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

このハンドルをウィジェットの左端または上端からの距離である位置pos に移動するようにスプリッタに指示します。

pos は、右から左への言語の場合、左 (または上) からも測定されることに注意してください。この関数は、QSplitter::moveSplitter() を呼び出す前に、pos を適切な位置にマップする。

QSplitter::moveSplitter() およびclosestLegalPosition()も参照

bool QSplitterHandle::opaqueResize() const

ス プ リ ッ タ を イ ン タ ラ ク テ ィ ブに動かしてい る と き に、 ウィ ジ ェ ッ ト が動的に (不透明に) リ サ イ ズ さ れ る と き はtrue を返 し ます。それ以外の場合はfalse を返します。この値はQSplitter で制御されます。

QSplitter::opaqueResize()も参照してください

Qt::Orientation QSplitterHandle::orientation() const

ハンドルの向きを返す。これは通常、QSplitter から伝搬される。

setOrientation() およびQSplitter::orientation()も参照のこと

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

再実装:QWidget::paintEvent(QPaintEvent *event)。

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

再実装:QWidget::resizeEvent(QResizeEvent *event)。

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

スプリッターハンドルの向きをorientation に設定する。 これは通常、QSplitter から伝搬される。

orientation() およびQSplitter::setOrientation()も参照のこと

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

QWidget::sizeHint

QSplitter *QSplitterHandle::splitter() const

このスプリッターハンドルに関連付けられたスプリッターを返します。

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.