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)
与えられたorientation とparent で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)
再実装: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
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.