Соединение QML и Qt - PullRequest
       7

Соединение QML и Qt

1 голос
/ 13 февраля 2012

Итак, вот мой сложный вопрос, и я надеюсь, что вы знаете ответ:)

Я занимаюсь разработкой приложения для Android с использованием Qt Necessitas.Я сделал .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 Ответ

2 голосов
/ 16 февраля 2012

1) легко вызвать функцию c ++ из QML.Вам необходимо выставить свой объект через setContextProperty QDeclarativeContext * ctxt = view.rootContext ();ctxt-> setContextProperty ("timer", & timerObj);

Затем вы можете вызывать любые слоты открытого объекта или функции, которая отклонена как Q_INVOKABLE.

Эта ссылка можетпомочь вам больше.

2) Вам нужно создать модель, вы можете использовать QStringListModel или создать собственную модель, полученную из QAbstractListModel .

Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...