2014-04-23 79 views
0

在將數據從QML數據轉換框讀取到C/C++代碼時遇到一些麻煩。我的QML代碼如下:如何從QML數據庫框中獲取數據

SpinBox { 
    id: spinBox1 
    objectName: "v_pct" 
    x: 252 
    y: 243 
    width: 73 
    height: 20 
    value: 0 
    stepSize: 1 
    minimumValue: 0 
    decimals: 0 
    maximumValue: 99 
} 

我有一個功能,查找值的微調框,如下所示:

void main_funcs::sys_set_voltage()   // sets system voltage percent of max range 
{ 
QQuickItem* object = myDialog->rootObject(); 
QObject *v_spin = object->findChild<QObject*>("v_pct");  // locate voltage spinbox 

QVariant vpct = v_spin->property("value").toUInt(); 
qDebug() << "SpinBox Data: " << vpct; 
... 

程序編譯,但在這一點上崩潰。

我已經嘗試使用後綴.toUInt(),.toString(),.toBitArray(),.toByteArray()嘗試將數據作爲字符串導入到QString中,作爲字符串放入QVariant中,每次程序崩潰。在QString的情況下,編譯器會拋出一個錯誤,指出它是一個QVariant類型。我甚至嘗試刪除%後綴。沒有幫助。有人可以點亮一些光線嗎?謝謝!!

+0

'v_spin-> property(「text」)。toUInt();';也許你的意思是 - >屬性(「值」)?我沒有在那裏看到任何「文本」屬性... – SingerOfTheFall

+0

是的,對不起。我刪除了一些不相關的代碼,並從我的帖子中意外刪除了該行。錯誤地回到了...... –

+0

'v_spin'是一個有效的指針嗎?你應該檢查它對'0'或'nullptr' – SingerOfTheFall

回答

0

解決了這個問題 - 數據是一個「真正的」qml基本類型,它是雙精度浮點型。所以解決方案是:

double vpct = v_pct->property("value").toDouble(); 

感謝SingerOfTheFall爲您的輸入。