void CVBaseTabWidget::dragMoveEvent(QDragMoveEvent* ev) {
    QPoint position = ev->pos();
    if (tabPosition() == QTabWidget::East) { //maybe a bug
        position.setX(width() - position.x());
    } else if (tabPosition() == QTabWidget::South) {
        position.setY(height() - position.y());
    }
    int index = tabBar()->tabAt(position);
    if (index >= 0) {
        setCurrentIndex(index);
    }
    ev->ignore();
}
int QTabWidget::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
    _id = QWidget::qt_metacall(_c, _id, _a);
    if (_id < 0)
        return _id;
    if (_c == QMetaObject::InvokeMetaMethod) {
        if (_id < 12)
            qt_static_metacall(this, _c, _id, _a);
        _id -= 12;
    }
#ifndef QT_NO_PROPERTIES
      else if (_c == QMetaObject::ReadProperty) {
        void *_v = _a[0];
        switch (_id) {
        case 0: *reinterpret_cast< TabPosition*>(_v) = tabPosition(); break;
        case 1: *reinterpret_cast< TabShape*>(_v) = tabShape(); break;
        case 2: *reinterpret_cast< int*>(_v) = currentIndex(); break;
        case 3: *reinterpret_cast< int*>(_v) = count(); break;
        case 4: *reinterpret_cast< QSize*>(_v) = iconSize(); break;
        case 5: *reinterpret_cast< Qt::TextElideMode*>(_v) = elideMode(); break;
        case 6: *reinterpret_cast< bool*>(_v) = usesScrollButtons(); break;
        case 7: *reinterpret_cast< bool*>(_v) = documentMode(); break;
        case 8: *reinterpret_cast< bool*>(_v) = tabsClosable(); break;
        case 9: *reinterpret_cast< bool*>(_v) = isMovable(); break;
        }
        _id -= 10;
    } else if (_c == QMetaObject::WriteProperty) {
        void *_v = _a[0];
        switch (_id) {
        case 0: setTabPosition(*reinterpret_cast< TabPosition*>(_v)); break;
        case 1: setTabShape(*reinterpret_cast< TabShape*>(_v)); break;
        case 2: setCurrentIndex(*reinterpret_cast< int*>(_v)); break;
        case 4: setIconSize(*reinterpret_cast< QSize*>(_v)); break;
        case 5: setElideMode(*reinterpret_cast< Qt::TextElideMode*>(_v)); break;
        case 6: setUsesScrollButtons(*reinterpret_cast< bool*>(_v)); break;
        case 7: setDocumentMode(*reinterpret_cast< bool*>(_v)); break;
        case 8: setTabsClosable(*reinterpret_cast< bool*>(_v)); break;
        case 9: setMovable(*reinterpret_cast< bool*>(_v)); break;
        }
        _id -= 10;
    } else if (_c == QMetaObject::ResetProperty) {
        _id -= 10;
    } else if (_c == QMetaObject::QueryPropertyDesignable) {
        _id -= 10;
    } else if (_c == QMetaObject::QueryPropertyScriptable) {
        _id -= 10;
    } else if (_c == QMetaObject::QueryPropertyStored) {
        _id -= 10;
    } else if (_c == QMetaObject::QueryPropertyEditable) {
        _id -= 10;
    } else if (_c == QMetaObject::QueryPropertyUser) {
        _id -= 10;
    }
#endif // QT_NO_PROPERTIES
    return _id;
}
int QMdiArea::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
    _id = QAbstractScrollArea::qt_metacall(_c, _id, _a);
    if (_id < 0)
        return _id;
    if (_c == QMetaObject::InvokeMetaMethod) {
        if (_id < 14)
            qt_static_metacall(this, _c, _id, _a);
        _id -= 14;
    }
#ifndef QT_NO_PROPERTIES
      else if (_c == QMetaObject::ReadProperty) {
        void *_v = _a[0];
        switch (_id) {
        case 0: *reinterpret_cast< QBrush*>(_v) = background(); break;
        case 1: *reinterpret_cast< WindowOrder*>(_v) = activationOrder(); break;
        case 2: *reinterpret_cast< ViewMode*>(_v) = viewMode(); break;
        case 3: *reinterpret_cast< bool*>(_v) = documentMode(); break;
        case 4: *reinterpret_cast< bool*>(_v) = tabsClosable(); break;
        case 5: *reinterpret_cast< bool*>(_v) = tabsMovable(); break;
        case 6: *reinterpret_cast< QTabWidget::TabShape*>(_v) = tabShape(); break;
        case 7: *reinterpret_cast< QTabWidget::TabPosition*>(_v) = tabPosition(); break;
        }
        _id -= 8;
    } else if (_c == QMetaObject::WriteProperty) {
        void *_v = _a[0];
        switch (_id) {
        case 0: setBackground(*reinterpret_cast< QBrush*>(_v)); break;
        case 1: setActivationOrder(*reinterpret_cast< WindowOrder*>(_v)); break;
        case 2: setViewMode(*reinterpret_cast< ViewMode*>(_v)); break;
        case 3: setDocumentMode(*reinterpret_cast< bool*>(_v)); break;
        case 4: setTabsClosable(*reinterpret_cast< bool*>(_v)); break;
        case 5: setTabsMovable(*reinterpret_cast< bool*>(_v)); break;
        case 6: setTabShape(*reinterpret_cast< QTabWidget::TabShape*>(_v)); break;
        case 7: setTabPosition(*reinterpret_cast< QTabWidget::TabPosition*>(_v)); break;
        }
        _id -= 8;
    } else if (_c == QMetaObject::ResetProperty) {
        _id -= 8;
    } else if (_c == QMetaObject::QueryPropertyDesignable) {
        _id -= 8;
    } else if (_c == QMetaObject::QueryPropertyScriptable) {
        _id -= 8;
    } else if (_c == QMetaObject::QueryPropertyStored) {
        _id -= 8;
    } else if (_c == QMetaObject::QueryPropertyEditable) {
        _id -= 8;
    } else if (_c == QMetaObject::QueryPropertyUser) {
        _id -= 8;
    }
#endif // QT_NO_PROPERTIES
    return _id;
}
Beispiel #4
0
/** @todo more accuracy here: for HLine, VLine etc. */
void M11TabWidget::paintEvent(QPaintEvent* event)
{
    bool needBox = false;
    switch (m_frameShape) {
    case QFrame::HLine:
    case QFrame::VLine:
    case QFrame::Panel:
    case QFrame::WinPanel:
        ::QTabWidget::paintEvent(event);
        return;
    case QFrame::NoFrame:
        return;
    case QFrame::StyledPanel:
        break;
    case QFrame::Box:
        needBox = true;
        break;
    default:
        Q_ASSERT(false);
        break;
    }
    QPainter p(this);
    QRect r;
    switch (tabPosition()) {
    case North:
    case South:
        r = rect().adjusted(1, 1 + height() - tabBar()->height(), 0, 0);
        p.fillRect(r, Utils::instance().gradientTopToBottom(r));
        break;
    case West:
    case East:
        r = rect().adjusted(1 + width() - tabBar()->width(), 0, 0, 0);
        p.fillRect(r, Utils::instance().gradientTopToBottom(r));
        break;
    default:
        Q_ASSERT(false);
        break;
    }

    p.save();
    // p.setPen(Utils::instance().palette().alternateBase().color());
    // p.drawLine(rect().topRight(), rect().bottomRight());
    p.setPen(Utils::instance().palette().dark().color());
    int pos, w = width() - 1, h = height() - 1;
    switch (tabPosition()) {
    case North:
        pos = tabBar()->height() - 1;
        if (needBox) {
            p.drawLine(QPoint(0, pos), QPoint(0, h));
            p.drawLine(QPoint(0, h), QPoint(w, h));
            p.drawLine(QPoint(w, pos), QPoint(w, h));
            p.drawLine(QPoint(0, pos), QPoint(w, pos));
        } else {
            p.drawLine(QPoint(0, pos), QPoint(w, pos));
        }
        break;
    case South:
        pos = ++h - tabBar()->height();
        if (needBox) {
            // p.drawLine(QPoint(0, 0), QPoint(0, pos));
            p.drawLine(QPoint(0, pos), QPoint(w, pos));
            // p.drawLine(QPoint(w, 0), QPoint(w, pos));
            // p.drawLine(QPoint(0, 0), QPoint(w, 0));
        } else {
            p.drawLine(QPoint(0, pos), QPoint(w, pos));
        }
        break;
    case West:
        pos = tabBar()->width() - 1;
        if (needBox) {
            p.drawLine(QPoint(pos, 0), QPoint(pos, h));
            p.drawLine(QPoint(pos, h), QPoint(w, h));
            p.drawLine(QPoint(w, 0), QPoint(w, h));
            p.drawLine(QPoint(pos, 0), QPoint(w, 0));
        } else {
            p.drawLine(QPoint(pos, 0), QPoint(pos, h));
        }
        break;
    case East:
        pos = ++w - tabBar()->width();
        if (needBox) {
            p.drawLine(QPoint(0, 0), QPoint(0, h));
            p.drawLine(QPoint(0, h), QPoint(pos, h));
            p.drawLine(QPoint(pos, 0), QPoint(pos, h));
            p.drawLine(QPoint(0, 0), QPoint(pos, 0));
        } else {
            p.drawLine(QPoint(pos, 0), QPoint(pos, h));
        }
        break;
    default:
        Q_ASSERT(false);
        break;
    }
    p.restore();
}