1 #pragma once 2 3 #include <QBasicTimer> 4 #include <QContextMenuEvent> 5 #include <QDragEnterEvent> 6 #include <QDragMoveEvent> 7 #include <QKeyEvent> 8 #include <QModelIndex> 9 #include <QPoint> 10 #include <QTimerEvent> 11 #include <QTreeView> 12 #include <QEvent> 13 14 #include "widget/wbasewidget.h" 15 16 class WLibrarySidebar : public QTreeView, public WBaseWidget { 17 Q_OBJECT 18 public: 19 explicit WLibrarySidebar(QWidget* parent = nullptr); 20 21 void contextMenuEvent(QContextMenuEvent * event) override; 22 void dragMoveEvent(QDragMoveEvent * event) override; 23 void dragEnterEvent(QDragEnterEvent * event) override; 24 void dropEvent(QDropEvent * event) override; 25 void keyPressEvent(QKeyEvent* event) override; 26 void timerEvent(QTimerEvent* event) override; 27 void toggleSelectedItem(); 28 bool isLeafNodeSelected(); 29 30 public slots: 31 void selectIndex(const QModelIndex&); 32 void slotSetFont(const QFont& font); 33 34 signals: 35 void rightClicked(const QPoint&, const QModelIndex&); 36 37 protected: 38 bool event(QEvent* pEvent) override; 39 40 private: 41 QBasicTimer m_expandTimer; 42 QModelIndex m_hoverIndex; 43 }; 44