0

qml Listview を c++ のように更新しています。

main.cpp;

listeci frmlisteci;
engine.rootContext()->setContextProperty("listeElemanlar", &frmlisteci.listeElemanlar);

Liste.qml で;

        ListView{
            id: listeciElemanlar
            anchors.fill: parent
            model: listeElemanlar
            delegate: Text{
                text: display
                verticalAlignment: Text.AlignBottom
                width : parent.width
                color: textRengi
                font.pointSize: 30
                leftPadding: 20
            }}

listeci.h;

public:
    QStringListModel listeElemanlar;
private:
    QStringList userAyarlari;

listeci.cpp;

listeci::listeci(QObject *parent) : QObject(parent)
{

    // Kullanıcı ayarları elemanları
    userAyarlari.append("Kullanıcı ayarı 01");
    userAyarlari.append("Kullanıcı ayarı 02");
    userAyarlari.append("Kullanıcı ayarı 03");
    userAyarlari.append("Kullanıcı ayarı 04");
    userAyarlari.append("Kullanıcı ayarı 05");
    userAyarlari.append("Kullanıcı ayarı 06");
    userAyarlari.append("Kullanıcı ayarı 07");
    userAyarlari.append("Kullanıcı ayarı 08");
    userAyarlari.append("Kullanıcı ayarı 09");
    userAyarlari.append("Kullanıcı ayarı 10");
    userAyarlari.append("Kullanıcı ayarı 11");
    userAyarlari.append("Kullanıcı ayarı 12");
    userAyarlari.append("Kullanıcı ayarı 13");
    userAyarlari.append("Kullanıcı ayarı 14");
    userAyarlari.append("Kullanıcı ayarı 15");
    userAyarlari.append("Kullanıcı ayarı 16");
    userAyarlari.append("Kullanıcı ayarı 17");
    userAyarlari.append("Kullanıcı ayarı 18");
    userAyarlari.append("Kullanıcı ayarı 19");
}
void listeci::listeGuncelle()
{
    listeElemanlar.setStringList(userAyarlari);
}

これらの行を使用して、リストを正常に作成し、qml Listview に表示できます。呼び出して qml 側のボタンをクリックすると、

frmlisteci.listeGuncelle()

しかし、マウント後にこの手順を実行すると (リストを更新すると言えます)、コードが遅くなり、次の行で待機します。

listeElemanlar.setStringList(userAyarlari);

理由は何ですか?

4

1 に答える 1