2014-03-06 68 views
4

我有一個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") 
    } 
} 
+1

你在做什麼是一個簡單的方法,它沒有任何問題。這就是計時器組件的用途。或者,您可以創建QML或C++模型,每分鐘更新其值。在C++中,模型可以是'QObject'屬性,所以它可以非常短。 –

+3

爲了避免每分鐘都做一次'Timer',我唯一要做的就是改變它,因爲特別是在Windows上,'Timer'不夠精確。你應該做一個每秒鐘觸發並相應更新日期的人。否則,您最終有時會冒着過早發射1秒的風險,並且保持相同的分鐘顯示兩次 – koopajah

回答

0

我意識到這個問題是幾年的歷史了,但被賦予無解,所以這裏的我是如何做到的(適用於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 
    } 
} 

上面現在保持時間/日期是最新的。我在不同的線路上插入代碼,但這是我能夠實現它的唯一方法。