По сути, у меня есть поле со списком в 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». Любая помощь?