Public Types | Signals | Public Member Functions | Protected Member Functions | Properties | Friends

QxtTabBar Class Reference
[QxtGui]

An extended QTabBar. More...

#include <qxttabbar.h>

Collaboration diagram for QxtTabBar:
Collaboration graph
[legend]

List of all members.

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

Detailed Description

An extended QTabBar.

QxtTabBar provides tabs that can be moved. QxtTabWidget uses QxtTabBar internally and thus its tabs are also optionally movable.

Example usage:

    QxtTabBar* tabBar = new QxtTabBar(tabWidget);
    tabBar->setMovableTabs(true); // tabs are movable now

Definition at line 34 of file qxttabbar.h.


Member Enumeration Documentation

Enumerator:
NoMovement 
InPlaceMovement 
DragDropMovement 

Definition at line 44 of file qxttabbar.h.


Constructor & Destructor Documentation

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.

{}

Member Function Documentation

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

Friends And Related Function Documentation

friend class QxtTabBarPrivate [friend]

Definition at line 37 of file qxttabbar.h.


Property Documentation

QxtTabBar::tabMovementMode [read, write]

This property holds how tabs can be moved.

The default value of this property is QxtTabBar::NoMovement.

See also:
tabMoved()

Definition at line 38 of file qxttabbar.h.


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines