1 /*************************************************************************** 2 * * 3 * This program is free software; you can redistribute it and/or modify * 4 * it under the terms of the GNU General Public License as published by * 5 * the Free Software Foundation; either version 3 of the License, or * 6 * (at your option) any later version. * 7 * * 8 ***************************************************************************/ 9 10 #pragma once 11 12 #include <QPushButton> 13 #include <QDragEnterEvent> 14 #include <QDropEvent> 15 #include <QDragMoveEvent> 16 #include <QMouseEvent> 17 18 class QResizeEvent; 19 class QPaintEvent; 20 class QLabel; 21 class QEvent; 22 23 class TabButton : public QPushButton 24 { 25 Q_OBJECT 26 public: 27 explicit TabButton(QWidget *parent = 0); 28 29 QSize sizeHint() const; 30 void setWidgetIcon(const QPixmap &px); resetGeometry()31 void resetGeometry() { updateGeometry(); } 32 int normalWidth() const; 33 int normalHeight() const; 34 35 protected: 36 virtual void resizeEvent(QResizeEvent *); 37 virtual bool eventFilter(QObject *, QEvent *); 38 virtual void dragEnterEvent(QDragEnterEvent *); 39 virtual void dragMoveEvent(QDragMoveEvent *); 40 virtual void dropEvent(QDropEvent *); 41 virtual void mousePressEvent(QMouseEvent *e); 42 virtual void mouseReleaseEvent(QMouseEvent *e); 43 virtual void mouseMoveEvent(QMouseEvent *e); 44 virtual void paintEvent(QPaintEvent *e); 45 46 signals: 47 void closeRequest(); 48 void dropped(TabButton*); 49 50 private: 51 void updateStyles(); 52 void updateGeometry(); 53 54 QLabel *label; 55 QLabel *px_label; 56 int parentHeight; 57 bool isLeftBtnHold; 58 }; 59