从QtreeView列表中获取字符串

时间:2012-05-22 09:04:00

标签: c++ qt qtreeview

我想从QtreeView列表中获取字符串。

在我的qtreeview中,我有:

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

我希望得到Strings:test_1,test2,test3,test4,test5 在数据库中启动请求。

我发现的唯一一件事是从您选择的节点获取字符串。

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

由于

1 个答案:

答案 0 :(得分: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;
}

此递归函数将从模型中提取所有文本。如果您想获得“特定”数据,那么您应该添加一些过滤。但基本上它会通过整棵树。