显示时间每分钟自动更新
Posted
技术标签:
【中文标题】显示时间每分钟自动更新【英文标题】:Display time automatically updating every minute 【发布时间】:2014-03-06 16:28:04 【问题描述】:我有一个 QML 应用程序,我正在尝试在其中创建一个简单的时钟来显示当前时间 - 类似于每个操作系统中的时钟。
时间应该以hh:mm
格式的文本呈现给用户,因此即 16:12。
目前我正在尝试在应用程序生命周期内运行 Timer 组件并通过调用更新文本的解决方案:
timeText.text = Qt.formatTime(new Date(),"hh:mm")
每 60 秒。有没有更好的方法来做到这一点或使用Timer 组件是必要的。
包含整个代码的片段:
Text
id: timeText
x: 10
y: 10
text: Qt.formatTime(new Date(),"hh:mm")
Timer
id: timer
interval: 60000
repeat: true
running: true
onTriggered:
timeText.text = Qt.formatTime(new Date(),"hh:mm")
【问题讨论】:
你做的是一个简单的方法,没有任何问题。这就是计时器组件的用途。或者,您可以使用 QML 或 C++ 创建一个模型,每分钟更新一次其值。在 C++ 中,模型可以是QObject
属性,因此可以很短。
唯一我会改变它以避免每分钟都执行Timer
,因为,尤其是在 Windows 上,Timer
不够精确。您应该每秒触发一次并相应地更新日期。否则,您最终会冒着提前 1 秒触发的风险,而只是将同一分钟显示两次
【参考方案1】:
我意识到这个问题已经有几年了,但没有给出解决方案,所以我是这样做的(这适用于 SailfishOS);
添加属性;
property alias updatesEnabled: timeText.updatesEnabled
然后,重要的部分;
Item
id: timeText
color: timeText.color
font.pixelSize: Theme.fontSizeHuge * 2.0
text: updatesEnabled: timeText.time <--------add line here
Qt.formatTime(new Date(), "hh:mm:ss")
anchors
horizontalCenter: parent.horizontalCenter
以上内容现在使时间/日期保持最新。我尝试在不同的行插入代码,但这是我让它工作的唯一方法。
【讨论】:
【参考方案2】:.qml
Item
Timer
interval:60000; running:true; repeat: true
onTriggered: time.text=Tcp.time()
Text
id:time
color: "white"
font.pointSize: 20
.cpp
QString Tcp::time()
return QDateTime:currentDateTime().toString("hh:mm");
【讨论】:
您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。以上是关于显示时间每分钟自动更新的主要内容,如果未能解决你的问题,请参考以下文章
PFQueryTableView 在新数据更新或每分钟使用 Parse 刷新时自动刷新
定时器自动刷新浏览器中的 HTML 页面 - 每 15 分钟