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.
1.7.2