tab_widget.h
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


plotjuggler
Author(s): Davide Faconti
autogenerated on Wed Jul 3 2019 19:28:05