Connecting QML and Qt
Connecting QML and Qt
这是我的复杂问题,我希望你知道答案:)
我正在使用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)));
}
所以我的问题是如何从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。
此链接可能会为您提供更多帮助。
2) 您需要创建模型,可以使用QStringListModel,也可以创建从QAbstractListModel派生的自定义模型。
希望这对你有帮助。
- Qt with Dlib and CUDA
- Qt, cmake and qhelpgenerator
- Qt 5.8 and Pdf.js error
- LNK2019 With Qt and Gmock
- Qt Application with QTabWidget, QGraphicsScene and QPushButt
- Qt/QML: WebEngineView and ScrollView
- Qt and Q_OBJECT
- Qt - QPixmap to XML and conversely
- Qt::CustomizeWindowHint and Qt::Tool analogs for gtkmm
- QT 5.9 and Opencv Error
- Qt QSharedMemory and QDataStream
- Qt qmake and DISTFILES
- Qt and pointers
- c++ QT and OpenCV. setMouseCallBack in QLabel?
- Qt and tesseract
- LeapMotion, Qt and signals
- QT and Crypto++ with /MTd
- libvlc-qt and OpenGL
- Qt and QDateTime comparing
- Qt and QdateTime comparing