#include <QTreeView>
class RoomTreeWidget : public QTreeView
{
Q_OBJECT
public:
RoomTreeWidget(QWidget *parent = 0);
~RoomTreeWidget();
void setVScrollDelayUpdateTime(quint32 mesc);
protected:
void timerEvent(QTimerEvent *event);
private:
quint32 vScrollDelayUpdateMesc;
int vScrollDelayUpdateTimerId;
};
#endif // ROOMLISTWIDGET_H
#include "roomtreewidget.h"
#include <QScrollBar>
#include <QTimerEvent>
RoomTreeWidget::RoomTreeWidget(QWidget *parent)
: QTreeView(parent), vScrollDelayUpdateMesc(0), vScrollDelayUpdateTimerId(0)
{
setUniformRowHeights(true);
}
RoomTreeWidget::~RoomTreeWidget()
{
}
void RoomTreeWidget::setVScrollDelayUpdateTime(quint32 mesc)
{
if (vScrollDelayUpdateMesc == mesc)
{
return;
}
vScrollDelayUpdateMesc = mesc;
QScrollBar *vScrollBar = verticalScrollBar();
if (vScrollBar)
{
if (vScrollDelayUpdateMesc > 0)
{
vScrollBar->setTracking(false);
if (vScrollDelayUpdateTimerId != 0)
{
killTimer(vScrollDelayUpdateTimerId);
}
vScrollDelayUpdateTimerId = startTimer(vScrollDelayUpdateMesc);
}
else
{
vScrollBar->setTracking(true);
if (vScrollDelayUpdateTimerId != 0)
{
killTimer(vScrollDelayUpdateTimerId);
vScrollDelayUpdateTimerId = 0;
}
}
}
}
void RoomTreeWidget::timerEvent(QTimerEvent *event)
{
QTreeView::timerEvent(event);
if (event->timerId() == vScrollDelayUpdateTimerId)
{
QScrollBar *vScrollBar = verticalScrollBar();
if (vScrollBar)
{
vScrollBar->triggerAction(QSlider::SliderMove);
}
}
}