Есть у меня QTreeView, там два столбца, каждый рутовый элемент имеет несколько дочерних элементов.
В программе функционал сделан таким образом: на каком бы элементе выделение не стояло родительский (корневой) элемент должен определятся. В том числе, если выделение стоит на родительском элементе, то он должен определятся. Сейчас я это делаю так:
QModelIndex curr = tvTemplate->currentIndex();
if (tvTemplate->selectionModel()->isSelected(curr))
{
QStandardItem *root = tvtModel->itemFromIndex(curr)->parent();
if (!root)
{
root = tvtModel->itemFromIndex(curr);
}
if (root)
{
sTRoot tRoot = root->data(Qt::UserRole).value<sTRoot>();
showLoadXmlDialog(tRoot);
}
}
Есть соответственно разница между выделением и текущим выбором.
При запуске программы текущий выбор стоит на первом элементе, а вот выделения на нем нету. Я ввел проверку, если текущий элемент выделен, то уже идет проверка сначала как будто это ребенок. Ищем paren'ta, если parent не находится, но элемент валидный - значит это родитель.
Такая вот проверка через заднее место. Можно ли как-то проще это сделать ?