gpt4 book ai didi

android - 连接 QML 和 Qt

转载 作者:行者123 更新时间:2023-11-30 04:29:36 25 4
gpt4 key购买 nike

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

我正在使用 Qt Necessitas 为 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("定时器", &timerObj);

然后你可以调用声明为 Q_INVOKABLE 的公开对象或函数的任何槽。

This link可能对您有更多帮助。

2) 需要创建模型,可以使用QStringListModel ,或者您可以创建派生自 QAbstractListModel 的自定义模型.

希望对您有所帮助。

关于android - 连接 QML 和 Qt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9262147/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com