A、レンダリングの
2つのコードを
#ifndef SPLITERWIDGET_H
#define SPLITERWIDGET_H
#include <QObject>
#include <QTextEdit>
#include <QWidget>
#include <QDebug>
#include <QSplitter>
#include <QSplitterHandle>
#include <QHBoxLayout>
#include <QVBoxLayout>
class HspliterHandler : public QSplitterHandle
{
Q_OBJECT
public:
explicit HspliterHandler(Qt::Orientation o, QSplitter *parent);
};
class Hspliter : public QSplitter
{
Q_OBJECT
public:
explicit Hspliter(Qt::Orientation o, QWidget* parent = nullptr);
protected:
virtual HspliterHandler *createHandle();
};
class SpliterWidget : public QWidget
{
Q_OBJECT
public:
SpliterWidget();
};
#endif // SPLITERWIDGET_H
#include "spliterwidget.h"
SpliterWidget::SpliterWidget()
{
QTextEdit *pLeftEdit = new QTextEdit("left",this);
QTextEdit *pTopEdit = new QTextEdit("top",this);
QTextEdit *pBottomEdit = new QTextEdit("bottom",this);
Hspliter *mainSpliter = new Hspliter(Qt::Horizontal,this);
Hspliter *rightSpliter = new Hspliter(Qt::Vertical,this);
mainSpliter->addWidget(pLeftEdit);
mainSpliter->addWidget(rightSpliter);
rightSpliter->addWidget(pTopEdit);
rightSpliter->addWidget(pBottomEdit);
QHBoxLayout *hlayout = new QHBoxLayout(this);
hlayout->addWidget(mainSpliter);
resize(400,300);
mainSpliter->setStretchFactor(0,1);
mainSpliter->setStretchFactor(1,3);
}
HspliterHandler::HspliterHandler(Qt::Orientation o, QSplitter *parent):
QSplitterHandle(o,parent)
{
}
Hspliter::Hspliter(Qt::Orientation o, QWidget *parent):
QSplitter(o,parent)
{
}
HspliterHandler *Hspliter::createHandle()
{
HspliterHandler *ph = new HspliterHandler(orientation(),this);
ph->setMinimumSize(3,3);
return ph;
}
III概要
1.クラスQ_WIDGETS_EXPORT QSplitter:容器の見公衆QFrame、QSplitterは、本質的に唯一のコンポーネント。容器部材を添加した後、自動的に左側スプリッタQSplitterHandle部材上に追加されます。
変換のQSplitterHandle部材; 2.サブクラスQSplitterは、重要な点は、書き換え可能な仮想HspliterHandler * createHandle()です。