Connecting QML and Qt

Connecting QML and Qt

本文关键字:Qt and QML Connecting      更新时间:2023-10-16

这是我的复杂问题,我希望你知道答案:)

我正在使用Qt Neessitas为android开发应用程序。我已经为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

我设法使它看起来像这样,但问题是我想在里面动态加载我的数据,我不想预定义它。

如果你需要更多的代码,请告诉我。

1)从QML调用c++函数很容易。您需要通过setContextProperty公开对象QDeclarativeContext*ctxt=view.rootContext();ctxt->setContextProperty("timer",&timerObj);

然后,您可以调用公开对象或函数的任何槽,该槽被解密为Q_INVOKABLE。

此链接可能会为您提供更多帮助。

2) 您需要创建模型,可以使用QStringListModel,也可以创建从QAbstractListModel派生的自定义模型。

希望这对你有帮助。