The QSplitterHandle class provides handle functionality of the splitter. 更多...
| 头: | #include <QSplitterHandle> |
| 继承: | QWidget |
| QSplitterHandle (Qt::Orientation orientation , QSplitter * parent ) | |
| bool | opaqueResize () const |
| Qt::Orientation | orientation () const |
| void | setOrientation (Qt::Orientation orientation ) |
| QSplitter * | splitter () const |
| virtual QSize | sizeHint () const |
| int | closestLegalPosition (int pos ) |
| void | moveSplitter (int pos ) |
| virtual bool | event (QEvent * event ) |
| virtual void | mouseMoveEvent (QMouseEvent * e ) |
| virtual void | mousePressEvent (QMouseEvent * e ) |
| virtual void | mouseReleaseEvent (QMouseEvent * e ) |
| virtual void | paintEvent (QPaintEvent *) |
| virtual void | resizeEvent (QResizeEvent * event ) |
The QSplitterHandle class provides handle functionality of the splitter.
QSplitterHandle is typically what people think about when they think about a splitter. It is the handle that is used to resize the widgets.
A typical developer using QSplitter will never have to worry about QSplitterHandle . It is provided for developers who want splitter handles that provide extra features, such as popup menus.
The typical way one would create splitter handles is to subclass QSplitter then reimplement QSplitter::createHandle () to instantiate the custom splitter handle. For example, a minimum QSplitter subclass might look like this:
class Splitter : public QSplitter { public: Splitter(Qt::Orientation orientation, QWidget *parent = 0); protected: QSplitterHandle *createHandle(); };
The
createHandle()
implementation simply constructs a custom splitter handle, called
Splitter
in this example:
QSplitterHandle *Splitter::createHandle() { return new SplitterHandle(orientation(), this); }
Information about a given handle can be obtained using functions like orientation () 和 opaqueResize (), and is retrieved from its parent splitter. Details like these can be used to give custom handles different appearances depending on the splitter's orientation.
The complexity of a custom handle subclass depends on the tasks that it needs to perform. A simple subclass might only provide a paintEvent () implementation:
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 this example, a predefined gradient is set up differently depending on the orientation of the handle. QSplitterHandle provides a reasonable size hint for the handle, so the subclass does not need to provide a reimplementation of sizeHint () unless the handle has special size requirements.
另请参阅 QSplitter .
创建 QSplitter handle with the given orientation and QSplitter parent .
[protected]
int
QSplitterHandle::
closestLegalPosition
(
int
pos
)
Returns the closest legal position to pos of the splitter handle. The positions are measured from the left or top edge of the splitter, even for right-to-left languages.
另请参阅 QSplitter::closestLegalPosition () 和 moveSplitter ().
[virtual protected]
bool
QSplitterHandle::
event
(
QEvent
*
event
)
重实现自 QObject::event ().
[virtual protected]
void
QSplitterHandle::
mouseMoveEvent
(
QMouseEvent
*
e
)
重实现自 QWidget::mouseMoveEvent ().
[virtual protected]
void
QSplitterHandle::
mousePressEvent
(
QMouseEvent
*
e
)
重实现自 QWidget::mousePressEvent ().
[virtual protected]
void
QSplitterHandle::
mouseReleaseEvent
(
QMouseEvent
*
e
)
重实现自 QWidget::mouseReleaseEvent ().
[protected]
void
QSplitterHandle::
moveSplitter
(
int
pos
)
Tells the splitter to move this handle to position pos , which is the distance from the left or top edge of the widget.
注意, pos is also measured from the left (or top) for right-to-left languages. This function will map pos to the appropriate position before calling QSplitter::moveSplitter ().
另请参阅 QSplitter::moveSplitter () 和 closestLegalPosition ().
Returns true if widgets are resized dynamically (opaquely), otherwise returns false. This value is controlled by the QSplitter .
另请参阅 QSplitter::opaqueResize ().
Returns the handle's orientation. This is usually propagated from the QSplitter .
另请参阅 setOrientation () 和 QSplitter::orientation ().
[virtual protected]
void
QSplitterHandle::
paintEvent
(
QPaintEvent
*)
重实现自 QWidget::paintEvent ().
[virtual protected]
void
QSplitterHandle::
resizeEvent
(
QResizeEvent
*
event
)
重实现自 QWidget::resizeEvent ().
Sets the orientation of the splitter handle to orientation . This is usually propagated from the QSplitter .
另请参阅 orientation () 和 QSplitter::setOrientation ().
[虚拟]
QSize
QSplitterHandle::
sizeHint
() const
重实现自 QWidget::sizeHint ().
返回关联此分割器手柄的分割器。
另请参阅 QSplitter::handle ().