2013-08-28 53 views
0

我有一個下降的文件設爲Qml像下來...添加元素落下BB 10個級聯

DropDown { 

       enabled: true 
       // text only 
       Option { 
        text: "EUR/USD" 

       } 

      } 

和我的數據庫基礎讀取功能就像是...... 的QList DatabaseOperations :: readRecords(QString的表名){

QList<QString> sym_ID_List; 
    // 1. Get the local DB connection. Note, called database() 
    // Will automatically open a connection to the database 
    QSqlDatabase database = QSqlDatabase::database(); // opens the default database. 

    // 2. Create a query to search for the records 
    QSqlQuery query(database); 
    const QString sqlQuery = "SELECT * FROM "+tableName; 

    if (query.exec(sqlQuery)) { 

     // Get the field indexes. We know the order of the fields, and could skip this step. 
     // However this will still work if the fi changeldse order in the query string. 
     const int customerIDField = query.record().indexOf("SymbolId"); 

     // 3. Start navigating through the records by calling the 'next' function. 
     //  When there are no longer any records it will return false. 
     int recordsRead = 0; 
     while (query.next()) { 
      // 4. Access the data (stored in the query) via the field indexes 
      // and add the data to the model. 

       sym_ID_List.insert(recordsRead,query.value(1).toString()); 


      recordsRead++; 
     } 
     qDebug() << "Read " << recordsRead << " records succeeded"; 
     if (recordsRead == 0) { 
      // alert(tr("The customer table is empty.")); 
     } 
    } else { 
     // alert(tr("Read records failed: %1").arg(query.lastError().text())); 
    } 

    // 6. Optionally close the database connection if we no longer plan to use it 
    database.close(); 
    return sym_ID_List; 

}

一次......執行該方法,即,它返回所有的符號ID在一個 「的QList」。現在我的問題是如何將這些「Qlist」元素dynamiccaly添加到下拉菜單中?

如何才達到它,

感謝,

回答

0

那麼,你需要做的第一件事是暴露你的QML下拉到C++。這與對象的名稱屬性ALA完成:

DropDown { 
    objectName: "myDropDown" 
    Option { 
     text: "EUR/USD" 
    } 
} 

接下來,從C++發現這個孩子:

foreach (QString string, list) { 
    dropDown->add(Option::create().text(list)); 
} 

QmlDocument *qml = QmlDocument::create("asset:///my.qml"); 
Container *root = qml->createRootObject<bb::cascades::Container>(); //or whatever the root control is 
DropDown *dropDown = root->findChild<DropDown*>("myDropDown"); 

最後,從添加的QList的選項