QSplitterHandle 类
QSplitterHandle类为拆分器提供句柄功能。
Header | #include < QSplitterHandle > |
---|---|
qmake | QT += widgets |
Inherits | QWidget |
Inherited By |
详细说明
QSplitterHandle通常是人们在考虑拆分器时所考虑的。它是用于调整小部件大小的句柄。
使用QSplitter的典型开发人员永远不必担心QSplitterHandle。它是为那些需要提供额外功能(如弹出菜单)的拆分器句柄的开发人员提供的。
创建拆分器句柄的典型方法是子类QSpliter,然后重新实现QSplitter::createHandle() 来实例化自定义拆分器句柄。例如,最小QSplitter子类可能如下所示:
class Splitter : public QSplitter
{
public:
Splitter(Qt::Orientation orientation, QWidget *parent = 0);
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() 的重新实现,除非句柄有特殊的大小要求。
公共函数
构造和析构
- QSplitterHandle(Qt::Orientation orientation, QSplitter *parent)
- virtual ~QSplitterHandle()
其他
-
bool opaqueResize() const 在以交互方式移动拆分器时动态调整小部件的大小(不透明)
此值由QSpliter控制。
-
Qt::Orientation orientation() const 返回句柄的方向
这通常是从QSpliter传播的。
-
void setOrientation(Qt::Orientation orientation) 将拆分器控制柄的方向设置为“orientation”
这通常是从QSpliter 传播的。 -
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