62 lines
1.8 KiB
C++
62 lines
1.8 KiB
C++
#include "ElaTreeView.h"
|
|
|
|
#include "ElaScrollBar.h"
|
|
#include "ElaTreeViewPrivate.h"
|
|
#include "ElaTreeViewStyle.h"
|
|
ElaTreeView::ElaTreeView(QWidget *parent) : QTreeView(parent), d_ptr(new ElaTreeViewPrivate()) {
|
|
Q_D(ElaTreeView);
|
|
d->q_ptr = this;
|
|
setObjectName("ElaTreeView");
|
|
setStyleSheet("#ElaTreeView{background-color:transparent;}"
|
|
"QHeaderView{background-color:transparent;border:0px;}");
|
|
|
|
setAnimated(true);
|
|
setMouseTracking(true);
|
|
|
|
ElaScrollBar *hScrollBar = new ElaScrollBar(this);
|
|
hScrollBar->setIsAnimation(true);
|
|
connect(hScrollBar, &ElaScrollBar::rangeAnimationFinished, this, [=]() { doItemsLayout(); });
|
|
setHorizontalScrollBar(hScrollBar);
|
|
setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded);
|
|
|
|
ElaScrollBar *vScrollBar = new ElaScrollBar(this);
|
|
vScrollBar->setIsAnimation(true);
|
|
connect(vScrollBar, &ElaScrollBar::rangeAnimationFinished, this, [=]() { doItemsLayout(); });
|
|
setVerticalScrollBar(vScrollBar);
|
|
setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
|
|
|
|
d->_treeViewStyle = new ElaTreeViewStyle(style());
|
|
setStyle(d->_treeViewStyle);
|
|
}
|
|
|
|
ElaTreeView::~ElaTreeView() {
|
|
Q_D(ElaTreeView);
|
|
delete d->_treeViewStyle;
|
|
}
|
|
|
|
void ElaTreeView::setItemHeight(int itemHeight) {
|
|
Q_D(ElaTreeView);
|
|
if (itemHeight > 0) {
|
|
d->_treeViewStyle->setItemHeight(itemHeight);
|
|
doItemsLayout();
|
|
}
|
|
}
|
|
|
|
int ElaTreeView::getItemHeight() const {
|
|
Q_D(const ElaTreeView);
|
|
return d->_treeViewStyle->getItemHeight();
|
|
}
|
|
|
|
void ElaTreeView::setHeaderMargin(int headerMargin) {
|
|
Q_D(ElaTreeView);
|
|
if (headerMargin >= 0) {
|
|
d->_treeViewStyle->setHeaderMargin(headerMargin);
|
|
doItemsLayout();
|
|
}
|
|
}
|
|
|
|
int ElaTreeView::getHeaderMargin() const {
|
|
Q_D(const ElaTreeView);
|
|
return d->_treeViewStyle->getHeaderMargin();
|
|
}
|