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; }
/** @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(); }