XML沒有自動轉換爲列表,主要是因爲XML可以具有任意結構。有QXmlStreamReader類可用於解析XML並填充模型。
假設XML看起來像
<keywords>
<keyword>Foo</keyword>
<keyword>Bar</keyword>
</keywords>
然後你只需要幾行代碼的解析它:如果
QXmlStreamReader reader(xmlFileName);
QStringList keywords;
while (!reader.atEnd()) {
// parse next token
reader.readNext();
// is this an opening "keyword" tag?
if (reader.isStartElement() && reader.name() == QLatin1String("keyword")) {
// add its value to the list
keywords.append(reader.text().toString());
}
}
auto completer = new QCompleter(keywords, lineEdit);
...
您可能需要使用該模型構造函數(與QStringListModel如)您希望使用來自不同XML文件的數據(例如基於某種配置)填充完成程序,因爲您可以輕鬆地再次填充模型clear()
。您也可以在多個QCompleter
實例之間共享相同的模型。
感謝您的提示!我會嘗試這樣。 – Sikarjan