QSplitterHandle Class

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

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

与えられたorientationparent を持つQSplitter ハンドルを作成します。

[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)

再リンプルメント: (QMouseEvent *event):QWidget::mousePressEvent(QMouseEvent *event)。

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

再リンプルメント: (QMouseEvent *event)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)

再リンプルメント: (QPaintEvent *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()も参照して ください。

本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。