Как обновить комбо-бокс в qml после отправки сигнала - PullRequest
0 голосов
/ 05 июля 2019

По сути, у меня есть поле со списком в qml, которое я заполняю с помощью QStringList. Однако я не могу обновить поле со списком (перезагрузить), чтобы показать, что список изменился. Я пытался сделать это с помощью Loader, но я не мог понять это. Может кто-нибудь подсказать мне, как это сделать.

network.qml

Popup{
    contentItem: Rectangle{

        LabelValueList {
            id: list1

            row1: LabelValue {
                id: row1

            row2: LabelValue {
                id: row2

                value: ComboBox {
                    id: combobox

                    model: ListModel {
                        id: comboModel

                        Component.onCompleted: {
                            //..
                            }
                        }
                    }
                }
            }
        }
    }
}

network.h

class Network : public QObject{
    Q_OBJECT
    Q_PROPERTY(QStringList listOfNetworks READ m_listOfNetworks NOTIFY updateNetworks)

    private:
        QStringList m_listOfNetworks;

    public:
        explicit Network(QObject *parent = 0);
        QStringList listOfNetworks() const;

    public slots:
        void slot_scanNetworks();

    signals:
        void updateNetworks();
};

network.cpp

Network::Network(QObject *parent) : QObject (parent){
}

void Network::slot_scanNetworks(){

    QFile SSIDsFile("/home/root/networking/listOfWifiNetworks.txt");

    m_listOfNetworks.clear();
    if (!SSIDsFile.open(QIODevice::ReadOnly | QIODevice::Text)){
    //
    }
    else{
        QTextStream scanNetworkStream(&SSIDsFile);

        while (!scanNetworkStream.atEnd()){
            QString line = scanNetworkStream.readLine();

            if (line.size() != 0){
                QStringList lineSplit = line.split(' ');
                m_listOfNetworks.append(lineSplit[1]);
            }
        }
    }
    SSIDsFile.close();
    emit updateNetworks();

}

Как перезагрузить комбинированное окно строки 2, чтобы обновить список? Это только получить список в начале, но я хочу обновить раскрывающийся список (поле со списком), когда я посылаю сигнал updateNetworks (). Я попытался использовать Loader и установить source.Component его для id строки 2, но я продолжал получать ошибку «Ошибка: Невозможно назначить QObject * для QQmlComponent». Любая помощь?

...