/*! Initialize \a option with the values from this QDial. This method is useful for subclasses when they need a QStyleOptionSlider, but don't want to fill in all the information themselves. \sa QStyleOption::initFrom() */ void QDial::initStyleOption(QStyleOptionSlider *option) const { if (!option) return; Q_D(const QDial); option->initFrom(this); option->minimum = d->minimum; option->maximum = d->maximum; option->sliderPosition = d->position; option->sliderValue = d->value; option->singleStep = d->singleStep; option->pageStep = d->pageStep; option->upsideDown = !d->invertedAppearance; option->notchTarget = d->target; option->dialWrapping = d->wrapping; option->subControls = QStyle::SC_All; option->activeSubControls = QStyle::SC_None; if (!d->showNotches) { option->subControls &= ~QStyle::SC_DialTickmarks; option->tickPosition = QSlider::TicksAbove; } else { option->tickPosition = QSlider::NoTicks; } option->tickInterval = notchSize(); }
void QDial::calcLines() { if ( !d->lines.size() ) { double r = QMIN( width(), height() ) / 2.0; int bigLineSize = calcBigLineSize(); double xc = width() / 2.0; double yc = height() / 2.0; int ns = notchSize(); int notches = ( maxValue() + ns - 1 - minValue() ) / ns; d->lines.resize( 2 + 2 * notches ); int smallLineSize = bigLineSize / 2; int i; for( i = 0; i <= notches; i++ ) { double angle = d->wrapping ? m_pi * 3 / 2 - i * 2 * m_pi / notches : (m_pi * 8 - i * 10 * m_pi / notches) / 6; double s = sin( angle ); // sin/cos aren't defined as const... double c = cos( angle ); if ( i == 0 || ( ((ns * i ) % pageStep() ) == 0 ) ) { d->lines[2*i] = QPoint( (int)( xc + ( r - bigLineSize ) * c ), (int)( yc - ( r - bigLineSize ) * s ) ); d->lines[2*i+1] = QPoint( (int)( xc + r * c ), (int)( yc - r * s ) ); } else { d->lines[2*i] = QPoint( (int)( xc + ( r - 1 - smallLineSize ) * c ), (int)( yc - ( r - 1 - smallLineSize ) * s ) ); d->lines[2*i+1] = QPoint( (int)( xc + ( r - 1 ) * c ), (int)( yc -( r - 1 ) * s ) ); } } } }
int QDial::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = QAbstractSlider::qt_metacall(_c, _id, _a); if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { if (_id < 5) qt_static_metacall(this, _c, _id, _a); _id -= 5; } #ifndef QT_NO_PROPERTIES else if (_c == QMetaObject::ReadProperty) { void *_v = _a[0]; switch (_id) { case 0: *reinterpret_cast< bool*>(_v) = wrapping(); break; case 1: *reinterpret_cast< int*>(_v) = notchSize(); break; case 2: *reinterpret_cast< qreal*>(_v) = notchTarget(); break; case 3: *reinterpret_cast< bool*>(_v) = notchesVisible(); break; } _id -= 4; } else if (_c == QMetaObject::WriteProperty) { void *_v = _a[0]; switch (_id) { case 0: setWrapping(*reinterpret_cast< bool*>(_v)); break; case 2: setNotchTarget(*reinterpret_cast< qreal*>(_v)); break; case 3: setNotchesVisible(*reinterpret_cast< bool*>(_v)); break; } _id -= 4; } else if (_c == QMetaObject::ResetProperty) { _id -= 4; } else if (_c == QMetaObject::QueryPropertyDesignable) { _id -= 4; } else if (_c == QMetaObject::QueryPropertyScriptable) { _id -= 4; } else if (_c == QMetaObject::QueryPropertyStored) { _id -= 4; } else if (_c == QMetaObject::QueryPropertyEditable) { _id -= 4; } else if (_c == QMetaObject::QueryPropertyUser) { _id -= 4; } #endif // QT_NO_PROPERTIES return _id; }