【发布时间】:2019-09-12 04:16:35
【问题描述】:
基本上,我在 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();
}
如何重新加载 row2 的组合框以刷新列表?它只在开始时获取列表,但我想在发出信号 updateNetworks() 时更新下拉列表(组合框)。我尝试使用 Loader 并将它的 source.Component 设置为 row2 的 id,但我一直收到错误“错误:无法将 QObject* 分配给 QQmlComponent”。有什么帮助吗?
【问题讨论】:
-
我已编辑问题以使其最小化
-
你看过链接的内容了吗?,好像没有,请看一下。
-
LabelValueList和LabelValue是什么?它们是否需要重现您的问题? -
什么是网络?在 QML 代码中如何使用它?
标签: qt qml loader qqmlcomponent