我想从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()
由于
答案 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;
}
此递归函数将从模型中提取所有文本。如果您想获得“特定”数据,那么您应该添加一些过滤。但基本上它会通过整棵树。