2012-02-13 121 views
1

因此,這裏是我的複雜的問題,我希望你知道答案:)連接QML和Qt

我開發的應用程序爲Android使用Qt Necessitas。 我爲GUI製作了.ui文件,我沒有找到我真正想要的東西,所以很多人都提出了QML,因爲它非常動態並提供了很多選項。

但是問題在於我之前從未使用過QML。

我需要一點幫助,只需要很少的功能,所以我可以知道如何做到以後。

例如。這是我的功能,我稱之爲使用post方法從數據庫讀取數據並調用php腳本。

void MainWindow::Citanje_korisnika() //read users 
{ 
    init(); 
    QUrl params; 
    params.addQueryItem("action","Citanje_korisnika"); 
    QByteArray data; 
    data.append(params.toString()); 
    data.remove(0,1); 
    QNetworkRequest request; 
    request.setUrl(url); 
    request.setHeader(QNetworkRequest::ContentTypeHeader, 
    QVariant("application/x-www-form-urlencoded")); 
    reply = manager->post(request, data); 
    connect(reply, SIGNAL(downloadProgress(qint64, qint64)),this, SLOT(updateDataTransferProgress(qint64,qint64))); 
} 
  1. 所以我的問題是如何調用從QML代碼這個功能呢?例如,當用戶按下按鈕?

  2. 之後,我有這個功能,使我的一切都進入我的形式。

    void MainWindow::Pokazi(QList< QMap<QString,QString> >& osobe) //show 
    { 
        i_max=osobe.count(); 
        osobe_next=osobe; 
        osoba = osobe.at(0); 
        //trenutni_id=osoba["id"]; 
        ui->label_ID->setText(osoba["id"]); 
        ui->line_ime->insert(osoba["ime"]); 
        ui->line_prezime->insert(osoba["prezime"]); 
        ui->line_telefon->insert(osoba["broj"]); 
        ui->line_adresa->insert(osoba["adresa"]); 
    } 
    

因此,這是我要顯示我的名單上的所有人員。

  1. 是否有可能將上面的QList加載到QML ListView中看起來像這樣? 我可以動態填充它嗎?

    ListModel { 
        ListElement { 
         name: "Bill Smith" 
         number: "555 3264" 
        } 
        ListElement { 
         name: "John Brown" 
         number: "555 8426" 
        } 
    } 
    

這與已經插入的值僅作爲示例。我的問題是如何使它從qml代碼動態填充?

而且我想我的名單看起來像在這個環節上第二個畫面:http://doc.qt.nokia.com/4.7-snapshot/qml-listview.html

我設法使它看起來像這一點,但問題是,我想動態加載我的數據裏面,我不希望它預定。

如果您需要更多的代碼,請告訴我。

回答

2

1)從QML調用C++函數很容易。 你需要通過setContextProperty 公開你的對象QDeclarativeContext * ctxt = view.rootContext(); ctxt-> setContextProperty(「timer」,& timerObj);

然後你可以調用任何被暴露的對象或函數的任何插槽,這些插件被降爲Q_INVOKABLE。

This link可能會幫助你更多。 2)您需要創建模型,您可以使用QStringListModel,或者您可以創建從QAbstractListModel派生的自定義模型。

希望這會幫助你。