#include "ElaTableView.h" #include #include #include "DeveloperComponents/ElaTableViewStyle.h" #include "ElaScrollBar.h" #include "ElaTableViewPrivate.h" ElaTableView::ElaTableView(QWidget *parent) : QTableView(parent), d_ptr(new ElaTableViewPrivate()) { Q_D(ElaTableView); d->q_ptr = this; setMouseTracking(true); setObjectName("ElaTableView"); setStyleSheet("QTableView{background-color:transparent;}" "QHeaderView{background-color:transparent;border:0px;}"); setShowGrid(false); setVerticalScrollBar(new ElaScrollBar(this)); setHorizontalScrollBar(new ElaScrollBar(this)); this->setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded); this->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); setHorizontalScrollMode(QAbstractItemView::ScrollPerPixel); setVerticalScrollMode(QAbstractItemView::ScrollPerPixel); d->_tableViewStyle = new ElaTableViewStyle(style()); setStyle(d->_tableViewStyle); } ElaTableView::~ElaTableView() { Q_D(ElaTableView); delete d->_tableViewStyle; } void ElaTableView::setHeaderMargin(int headerMargin) { Q_D(ElaTableView); if (headerMargin >= 0) { d->_tableViewStyle->setHeaderMargin(headerMargin); doItemsLayout(); } } int ElaTableView::getHeaderMargin() const { Q_D(const ElaTableView); return d->_tableViewStyle->getHeaderMargin(); } void ElaTableView::showEvent(QShowEvent *event) { Q_EMIT tableViewShow(); QTableView::showEvent(event); } void ElaTableView::hideEvent(QHideEvent *event) { Q_EMIT tableViewHide(); QTableView::hideEvent(event); } void ElaTableView::mouseMoveEvent(QMouseEvent *event) { Q_D(ElaTableView); if (selectionBehavior() == QAbstractItemView::SelectRows) { d->_tableViewStyle->setCurrentHoverRow(indexAt(event->pos()).row()); update(); } QTableView::mouseMoveEvent(event); } void ElaTableView::leaveEvent(QEvent *event) { Q_D(ElaTableView); if (selectionBehavior() == QAbstractItemView::SelectRows) { d->_tableViewStyle->setCurrentHoverRow(-1); update(); } QTableView::leaveEvent(event); }