I use a QDial control for input time values in sec. How do I change the automatically added text that shows up in the middle of these dials?
EDIT: They come from the QtCurve style.
I use a QDial control for input time values in sec. How do I change the automatically added text that shows up in the middle of these dials?
EDIT: They come from the QtCurve style.
If there is no code in your program to explicitly display this integral value (in a signal/slot), then it may very well be your current Qt Style which does it. See the following examples of Qt styles to see that the display of this integer is usually NOT part of the QDial display:
http://qt-project.org/doc/qt-4.8/gallery-plastique.html
http://qt-project.org/doc/qt-4.8/gallery-cde.html
http://qt-project.org/doc/qt-4.8/gallery-gtk.html
http://qt-project.org/doc/qt-4.8/gallery-cleanlooks.html
http://qt-project.org/doc/qt-4.8/gallery-windowsvista.html
http://qt-project.org/doc/qt-4.8/gallery-macintosh.html
See: http://qt-project.org/doc/qt-4.8/qstyle.html for more info on styles.
You can also look in your program code for the following code:
QApplication::setStyle(...);
You could also check the following:
If you still don't find how your style is set, then it may be the default style for your platform.
What does the following says ?
QStyle *currentStyle = QApplication::style();
qDebug() << currentStyle;
qDebug() << currentStyle->objectName();
qDebug() << currentStyle->metaObject()->className();
EDIT: I see you identified the style to be QtCurve.
Source is there: http://kde-look.org/content/download.php?content=40492&id=1&tan=23640920
And we can see that the style is responsible for displaying the value:
file: style/qtcurve.cpp, line: 7980
// Draw value...
#ifdef DIAL_DOT_ON_RING
drawItemTextWithRole(painter, outer.adjusted(sliderWidth, sliderWidth, -sliderWidth, -sliderWidth),
Qt::AlignCenter, palette, state&State_Enabled,
QString::number(slider->sliderValue), QPalette::ButtonText);
#else
int adjust=2*sliderWidth;
drawItemTextWithRole(painter, outer.adjusted(adjust, adjust, -adjust, -adjust),
Qt::AlignCenter, palette, state&State_Enabled,
QString::number(slider->sliderValue), QPalette::ButtonText);
#endif
From now on, you can either:
Assuming you mean sec as in seconds? You can work out the percentage of where the dial is relative to its full rotation and then apply that to the percentage of maximum seconds.
For example, if the dial goes from 0 to 360 and the current position is at 90, its percentage is
90 / 360 * 100 = 25%.
If your maximum value in seconds is 60, then 25 percent of 60.
25 / 100 * 60 = 15 seconds.
So the display would now show 15 seconds.