【问题标题】:Qt5 custom widget - Curved sliderQt5 自定义小部件 - 弯曲滑块
【发布时间】:2023-03-09 19:16:01
【问题描述】:

我正在开始我的下一个电子项目,即创建我自己版本的 Google Nest Thermostat。我喜欢用于温度选择的整个圆形刻度盘,我一直在考虑如何自己创建它。 GUI 编程不是我的专业领域(一直是 CLI!)。

到目前为止,我认为是两条路线之一,都涉及自定义小部件:

  1. 创建一个从按钮类继承的小部件。该子类将包含许多按钮,每个按钮对应温标中的每个步骤,按 3/4 圆圈排列。
  2. 创建一个从滑块类继承的小部件,定义一个围绕 3/4 圆弯曲的对象。每一步都是一个温度。

现在...我不知道这些是否是解决此问题的实际解决方案,或者是否有更简单的方法来解决此问题。我已经查看了样式表,但我不认为会这样做。我在谷歌周围有过类似的东西,但还没有找到任何东西。也就是说,3electrons 的 AnalogWidgets 至少会创建表盘,但这些是用于输出而不是输入。

【问题讨论】:

  • 这种事情在 QtQuick 中很简单,但在使用 QtWidgets 时却非常困难——有什么理由你没有考虑到这一点?就目前而言,这个问题对于 SO 来说太宽泛了(有很多方法可以实现您的要求),因此您需要做更多的研究并将您的问题缩小为更具体的问题。
  • 那我来看看QtQuick。还没有遇到过。我太专注于如何使用小部件来做到这一点。谢谢。
  • QGraphicsView 也值得一提。如果您必须使用小部件(混合使用 QML 和 QWidget 技术有很多限制)或者您没有足够的时间来了解 QML 中的工作原理,QGraphicsView 为灵活的 UI 元素提供了一些很棒的功能。

标签: c++ qt widget


【解决方案1】:

我昨天试过了,如果你想在一个包含 js 和 SVG 图像的应用程序中模拟巢式恒温器,它会很好地工作: https://www.svidget.io/examples/nestthermostat

HTML sn-p:

<object id="nestThermostatWidget" role="svidget" data="nestThermostatWidget.svg" type="image/svg+xml" width="400" height="400">
<param name="targetTemp" value="77" />
<param name="ambientTemp" value="80" />
<param name="unit" value="F" />
<param name="state" value="cooling" />
<param name="showLeaf" value="1" />
<param name="awayMode" value="0" /> 
</object>

【讨论】:

  • 链接可能有用,但也请从链接中发布相关信息,否则如果链接失效,您的答案是多余的。干杯
  • 将在我使用 PC 时添加 SVG。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-19
  • 1970-01-01
  • 1970-01-01
  • 2022-01-16
  • 1970-01-01
  • 2023-04-05
  • 1970-01-01
相关资源
最近更新 更多