连接QML和Qt
因此,这里是我的复杂的问题,我希望你知道答案:)连接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)));
}
所以我的问题是如何调用从QML代码这个功能呢?例如,当用户按下按钮?
-
之后,我有这个功能,使我的一切都进入我的形式。
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"]); }
因此,这是我要显示我的名单上的所有人员。
-
是否有可能将上面的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。
This link可能会帮助你更多。 2)您需要创建模型,您可以使用QStringListModel,或者您可以创建从QAbstractListModel派生的自定义模型。
希望这会帮助你。