首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QDial更改位置指示文本

QDial更改位置指示文本
EN

Stack Overflow用户
提问于 2013-07-25 11:50:31
回答 2查看 2.6K关注 0票数 1

以秒为单位,我对输入时间值使用QDial控件。如何更改这些刻度盘中间显示的自动添加的文本?

编辑:它们来自QtCurve风格。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-02 15:58:12

如果您的程序中没有代码显式显示这个整数值(在信号/插槽中),那么很可能是您当前的Qt风格来实现它。请参阅下面的Qt样式示例,以确保该整数的显示通常不是QDial显示的一部分:

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

有关样式的更多信息,请参见:http://qt-project.org/doc/qt-4.8/qstyle.html

您还可以在程序代码中查找以下代码:

代码语言:javascript
复制
 QApplication::setStyle(...);

您还可以检查以下内容:

  • QT_STYLE_OVERRIDE环境变量
  • 传递给程序的-style=参数

如果您仍然没有找到如何设置您的样式,那么它可能是您的平台的默认样式。

下面是怎么说的?

代码语言:javascript
复制
QStyle *currentStyle = QApplication::style();
qDebug() << currentStyle;
qDebug() << currentStyle->objectName();
qDebug() << currentStyle->metaObject()->className();

编辑:--我看到您将样式标识为QtCurve。

资料来源:http://kde-look.org/content/download.php?content=40492&id=1&tan=23640920

我们可以看到,样式负责显示值:

文件: style/qtcurve.cpp,行: 7980

代码语言:javascript
复制
                // 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

从现在开始,你可以:

  • 禁用错误代码(注释或使用布尔选项)后重新编译样式。
  • 请维护人员提供一个选项来禁用刻度盘值的显示。
票数 1
EN

Stack Overflow用户

发布于 2013-07-25 12:32:57

假设你指的是秒数?您可以计算出刻度盘相对于其全部旋转位置的百分比,然后将其应用于最大秒数的百分比。

例如,如果刻度盘从0转到360,而当前位置为90,则其百分比为

90 / 360 * 100 = 25%。

如果以秒为单位的最大值是60,那么60的25 %。

25 / 100 * 60 =15秒。

所以显示现在显示15秒。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17857222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档