2

QtreeViewのリストから文字列を取得したい。

私のqtreeviewには次のものがあります。

   [*] Node1
        [*] Subnode1_1
            test_1
            test_2
    [*] Node2
        test_3
        [*] Subnode2_1
            test_4    
    test_5

そして、文字列を取得したい:test_1、test2、test3、test4、test5データベースでリクエストを開始します。

私が見つけた唯一のものは、選択したノードから文字列を取得することです。

に :Tree->model()->itemData(m_listOfModelIndex.at(0))[Qt::DisplayRole].toString()

ありがとう

4

1 に答える 1

9
QStringList strings = extractStringsFromModel(Tree->model(), QModelIndex());

extractStringsFromModelの実装

QStringList extractStringsFromModel(QAbstractItemModel *model, const QModelIndex &parent)
{
    QStringList retval;


    int rowCount = model->rowCount(parent);

    for(int i = 0; i < rowCount; ++i)
    {
        QModelIndex idx = model->index(i, 0, parent);

        if(idx.isValid())
        {
            retval << idx.data(Qt::DisplayRole).toString();
            retval << extractStringsFromModel(model, idx);
        }
    }

    return retval;
}

この再帰関数は、モデルからすべてのテキストを抽出します。「特定の」データを取得する場合は、フィルタリングを追加する必要があります。しかし、基本的にはツリー全体を通過します。

于 2012-05-22T09:52:19.597 に答える