首页 > 解决方案 > qt qml QListview 更新慢

问题描述

我正在从 C++ 更新 qml Listview;

在 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 侧的按钮时,我可以成功创建一个列表并在 qml Listview 上显示

frmlisteci.listeGuncelle()

但是当我在挂载后执行此过程时,(我们可以说刷新列表)代码变慢,并在此行等待:

listeElemanlar.setStringList(userAyarlari);

可能是什么原因?

标签: qtlistviewqmlqt-quickqstringlist

解决方案


我发现问题是由stackview引起的......

我正在通过 stackview.pop 在页面之间导航。我将pop更改为replace,问题解决了......


推荐阅读