我已經用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屬性,並以相同的方式從滑塊獲取值,在那裏沒有錯誤。我在這裏做錯了什麼?
歡迎來到Stack Overflow!你確定你嘗試過qreal,乾淨的構建,也是雙倍的?另外,Slider定義在哪裏?有那麼多的組件集,你在使用QtQuickControls嗎? Qt的哪個版本?另外,「con」究竟暴露了多少? – lpapp
嗨,坦克爲你的快速答案:-)我使用Qt5.2和QtQuick.Controls 1.1。我通過qmlRegisterType(「com.fhk」,1,0,「Myclass」)在主函數中公開這個類。我只是將滑塊的最小值更改爲0(在-10.0之前),並且消息已消失。但我不知道爲什麼當最小值低於零時彈出警告。 –
Milhouse
出於好奇,你使用QGuiApplication還是QApplication?請提供符合sscce.org的測試用例來重現此問題。這將是很好的調查是否是一個Qt錯誤。 – lpapp