2014-02-23 21 views
1

我已經用QML編寫了我的用戶界面,並且需要將一些值從Slider傳遞給C++類。 C++類通過qmlRegisterType()公開給QML。我的滑塊是非常簡單的,看起來像這樣:Qt類型QML/real和C++/float之間的錯誤

Slider { 
    id: sliderCurForceR 
    stepSize: 0.1 
    value: 0.0 
    onValueChanged: { 
     con.CurForceR = value 
    } 

其中,「精讀」是我的C++類我接觸到QML的ID。 onValueChanged我喜歡在「con」中將屬性CurForceR設置爲滑塊值。該屬性定義如下:當我運行我的程序

Q_PROPERTY(float CurForceR READ getCurForceR WRITE setCurForceR NOTIFY CurForceRChanged) 

void setCurForceR(const float &force); 
float getCurForceR(); 

現在,我得到了一個「類型錯誤:錯誤類型」,它指向分配「con.CurForceR =價值」的消息。然而,它按預期工作,我從我的滑塊到我的C++屬性的當前值,但我喜歡擺脫這個討厭的錯誤消息/警告。我也嘗試使用qreal類型的屬性,但結果相同。我也使用一個int屬性,並以相同的方式從滑塊獲取值,在那裏沒有錯誤。我在這裏做錯了什麼?

+0

歡迎來到Stack Overflow!你確定你嘗試過qreal,乾淨的構建,也是雙倍的?另外,Slider定義在哪裏?有那麼多的組件集,你在使用QtQuickControls嗎? Qt的哪個版本?另外,「con」究竟暴露了多少? – lpapp

+0

嗨,坦克爲你的快速答案:-)我使用Qt5.2和QtQuick.Controls 1.1。我通過qmlRegisterType (「com.fhk」,1,0,「Myclass」)在主函數中公開這個類。我只是將滑塊的最小值更改爲0(在-10.0之前),並且消息已消失。但我不知道爲什麼當最小值低於零時彈出警告。 – Milhouse

+0

出於好奇,你使用QGuiApplication還是QApplication?請提供符合sscce.org的測試用例來重現此問題。這將是很好的調查是否是一個Qt錯誤。 – lpapp

回答

0

好的,我明白了。簡單的故障...我忘記了當這個滑塊初始化時第一次發射onValueChanged信號。問題在我的qml文件中,我在myclass類型之前創建了滑塊。所以該屬性第一次無法訪問,因爲保存它的項目在滑塊後不久創建。但是我仍然不明白爲什麼當最小值爲零時沒有出現故障。無論如何,非常感謝Laszlo,讓我對此有更多的瞭解:-)

相關問題