Go to the documentation of this file.00001 #ifndef TAB_BAR_H
00002 #define TAB_BAR_H
00003
00004 #include <QTabBar>
00005 #include <QLabel>
00006 #include <QPixmap>
00007 #include <QDebug>
00008 #include <QTabWidget>
00009 #include <QMimeData>
00010 #include <QDragEnterEvent>
00011 #include <QDragLeaveEvent>
00012 #include <QApplication>
00013
00014 class TabWidget : public QTabWidget
00015 {
00016 Q_OBJECT
00017 public:
00018 TabWidget(QWidget* parent)
00019 : QTabWidget(parent)
00020 {
00021 this->tabBar()->setFixedHeight(40);
00022 setAcceptDrops(true);
00023 }
00024
00025 void dragEnterEvent(QDragEnterEvent *ev) override
00026 {
00027 if( ev->pos().y() > 43 )
00028 {
00029 ev->ignore();
00030 return;
00031 }
00032 const QMimeData *mimeData = ev->mimeData();
00033 QStringList mimeFormats = mimeData->formats();
00034 for(const QString& format: mimeFormats)
00035 {
00036 QByteArray encoded = mimeData->data( format );
00037 QDataStream stream(&encoded, QIODevice::ReadOnly);
00038
00039 QStringList curves;
00040
00041 while (!stream.atEnd())
00042 {
00043 QString curve_name;
00044 stream >> curve_name;
00045 if(!curve_name.isEmpty()) {
00046 curves.push_back(curve_name);
00047 }
00048 }
00049
00050 if( format.contains( "plot_area") && curves.size() == 1 )
00051 {
00052 QApplication::setOverrideCursor(QCursor(Qt::DragMoveCursor));
00053 ev->accept();
00054 _plot_to_move = curves.front();
00055 return;
00056 }
00057 }
00058 ev->ignore();
00059 }
00060
00061 void dragMoveEvent(QDragMoveEvent *ev) override
00062 {
00063 if( ev->pos().y() > 43 )
00064 {
00065 ev->ignore();
00066 return;
00067 }
00068 ev->accept();
00069 }
00070
00071 void dragLeaveEvent(QDragLeaveEvent *ev) override
00072 {
00073 _plot_to_move = "";
00074 QApplication::restoreOverrideCursor();
00075 }
00076
00077 void dropEvent(QDropEvent *ev) override
00078 {
00079 emit movingPlotWidgetToTab(_plot_to_move);
00080 _plot_to_move = "";
00081 QApplication::restoreOverrideCursor();
00082 }
00083
00084 private:
00085 QString _plot_to_move;
00086
00087 signals:
00088
00089 void movingPlotWidgetToTab(QString plot_name);
00090 };
00091
00092 #endif // TAB_BAR_H