2017-01-10 10 views
0

QtWidget(QPlainTextEdit)の自動補完機能を構築したいと思います。私が使用したいキーワードはXMLファイルに保存されています。 XMLファイルをQCompleterに簡単に取り込む方法はありますか? QCompleterは、QAbstractItemModelまたはQStringListを使用して呼び出すことができます。だから私は、XMLファイルをこれらの2つのうちの1つに変える機能があることを期待していました。これは可能ですか、XMLファイルを1行ずつ読み込んでモデルやリストを埋めなければなりませんか?XMLファイルをQAbstractItemModelに変換する

ありがとうございます。

答えて

1

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で例えば)モデルのctorを使用する可能性がある場合clear()を簡単に作成して再度モデルを再作成することができるため、たとえば、いくつかの設定に基づいて、異なるXMLファイルのデータをコンプリータに取り込みたいとします。複数のQCompleterインスタンス間で同じモデルを共有することもできます。

+0

ヒントありがとうございます!私はこれのようにそれを試してみます。 – Sikarjan

関連する問題