An extended QTabBar. More...
#include <qxttabbar.h>
Public Types | |
enum | TabMovementMode { NoMovement, InPlaceMovement, DragDropMovement } |
Signals | |
void | tabMoved (int fromIndex, int toIndex) |
Public Member Functions | |
QxtTabBar (QWidget *parent=0) | |
virtual | ~QxtTabBar () |
TabMovementMode | tabMovementMode () const |
void | setTabMovementMode (TabMovementMode mode) |
Protected Member Functions | |
void | mousePressEvent (QMouseEvent *event) |
void | mouseMoveEvent (QMouseEvent *event) |
void | mouseReleaseEvent (QMouseEvent *event) |
void | dragEnterEvent (QDragEnterEvent *event) |
void | dragMoveEvent (QDragMoveEvent *event) |
void | dropEvent (QDropEvent *event) |
Properties | |
TabMovementMode | tabMovementMode |
This property holds how tabs can be moved. | |
Friends | |
class | QxtTabBarPrivate |
An extended QTabBar.
QxtTabBar provides tabs that can be moved. QxtTabWidget uses QxtTabBar internally and thus its tabs are also optionally movable.
Example usage:
Definition at line 34 of file qxttabbar.h.
Definition at line 44 of file qxttabbar.h.
QxtTabBar::QxtTabBar | ( | QWidget * | parent = 0 ) |
[explicit] |
Constructs a new QxtTabBar with parent.
Definition at line 243 of file qxttabbar.cpp.
References QXT_INIT_PRIVATE.
: QTabBar(parent) { QXT_INIT_PRIVATE(QxtTabBar); }
QxtTabBar::~QxtTabBar | ( | ) | [virtual] |
Definition at line 249 of file qxttabbar.cpp.
{}
void QxtTabBar::dragEnterEvent | ( | QDragEnterEvent * | event ) | [protected] |
Definition at line 333 of file qxttabbar.cpp.
{ // only accept if it's a tab movement request const QMimeData* mimeData = event->mimeData(); QStringList formats = mimeData->formats(); if (formats.contains("action") && (mimeData->data("action") == "tabMovement")) event->acceptProposedAction(); else QTabBar::dragEnterEvent(event); }
void QxtTabBar::dragMoveEvent | ( | QDragMoveEvent * | event ) | [protected] |
Definition at line 344 of file qxttabbar.cpp.
{ // only accept if it's a tab movement request const QMimeData* mimeData = event->mimeData(); QStringList formats = mimeData->formats(); if (formats.contains("action") && (mimeData->data("action") == "tabMovement")) event->acceptProposedAction(); else QTabBar::dragMoveEvent(event); }
void QxtTabBar::dropEvent | ( | QDropEvent * | event ) | [protected] |
Definition at line 358 of file qxttabbar.cpp.
References QxtTabBarPrivate::DropAction, and tabMoved().
{ // only accept if it's a tab movement request const QMimeData* mimeData = event->mimeData(); QStringList formats = mimeData->formats(); if (formats.contains("action") && (mimeData->data("action") == "tabMovement")) { int dropTab = qxt_d().tabAt(event->pos(), QxtTabBarPrivate::DropAction); if (qxt_d().moveTab(event->pos(), qxt_d().movingTab, dropTab, QxtTabBarPrivate::DropAction)) { emit tabMoved(qxt_d().movingTab, dropTab); qxt_d().movingTab = -1; event->acceptProposedAction(); } } else { QTabBar::dropEvent(event); } }
void QxtTabBar::mouseMoveEvent | ( | QMouseEvent * | event ) | [protected] |
Definition at line 288 of file qxttabbar.cpp.
References DragDropMovement, InPlaceMovement, QxtTabBarPrivate::MoveAction, and tabMoved().
{ QTabBar::mouseMoveEvent(event); if (qxt_d().movingTab == -1) return; if (qxt_d().mode == InPlaceMovement) { int hoverTab = qxt_d().tabAt(event->pos(), QxtTabBarPrivate::MoveAction); if (qxt_d().moveTab(event->pos(), qxt_d().movingTab, hoverTab, QxtTabBarPrivate::MoveAction)) { emit tabMoved(qxt_d().movingTab, hoverTab); qxt_d().movingTab = hoverTab; event->accept(); } } else if (qxt_d().mode == DragDropMovement) { if ((event->pos() - qxt_d().pressPoint).manhattanLength() >= QApplication::startDragDistance()) { QDrag* drag = new QDrag(this); QMimeData* mimeData = new QMimeData; // a crude way to distinguish tab movement drops from other ones mimeData->setData("action", "tabMovement"); drag->setMimeData(mimeData); drag->start(); // to support < Qt 4.3 } } }
void QxtTabBar::mousePressEvent | ( | QMouseEvent * | event ) | [protected] |
Definition at line 275 of file qxttabbar.cpp.
References QxtTabBarPrivate::PressAction.
{ QTabBar::mousePressEvent(event); if (event->button() == Qt::LeftButton) { qxt_d().movingTab = qxt_d().tabAt(event->pos(), QxtTabBarPrivate::PressAction); qxt_d().pressPoint = event->pos(); } }
void QxtTabBar::mouseReleaseEvent | ( | QMouseEvent * | event ) | [protected] |
Definition at line 324 of file qxttabbar.cpp.
{ QTabBar::mouseReleaseEvent(event); qxt_d().movingTab = -1; }
void QxtTabBar::setTabMovementMode | ( | TabMovementMode | mode ) |
Definition at line 265 of file qxttabbar.cpp.
References DragDropMovement.
Referenced by QxtTabWidget::setTabMovementMode().
{ qxt_d().mode = mode; if (mode == DragDropMovement) setAcceptDrops(true); }
QxtTabBar::tabMoved | ( | int | fromIndex, |
int | toIndex | ||
) | [signal] |
This signal is emitted whenever a tab is moved fromIndex toIndex.
Referenced by dropEvent(), and mouseMoveEvent().
TabMovementMode QxtTabBar::tabMovementMode | ( | ) | const |
friend class QxtTabBarPrivate [friend] |
Definition at line 37 of file qxttabbar.h.
QxtTabBar::tabMovementMode [read, write] |
This property holds how tabs can be moved.
The default value of this property is QxtTabBar::NoMovement.
Definition at line 38 of file qxttabbar.h.