显示时间每分钟自动更新

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 分钟

如何每分钟更新一次我的 WP8 Silverlight 应用程序磁贴?

配置Jenkins自动构建打包项目

ABP规则怎么自动更新

mysql 怎么将时间自动更新自动加上72小时