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)
与えられた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)
再リンプルメント: (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.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。