Я создаю QTreeView в окне и хочу получить текст выбранных элементов при двойном щелчке по ним. Я пытаюсь использовать сигнал "doubleClicked (const QModelIndex &)", чтобы получить индекс выбранного элемента.
Но когда я получил сигнал и хотел что-то сделать с переданным индексом, я не могу получить предмет должным образом.
Я обнаружил, что переданный индекс выглядит примерно так:
корень
| ... item1 (0, 0)
| ... | ... subItem1 (0, 0)
| ... | ... подраздел 2 (1, 0)
| ... item2 (1, 0)
Есть два (0, 0) и (1, 0) элемента ???
РЕДАКТИРОВАТЬ: я получил этот результат
qDebug(QString::number(index.row()).toLatin1().data()); // row
qDebug(QString::number(index.column()).toLatin1().data()); // column
Вот мой код, создайте QTreeView и QStandardItemModel:
mTree = new QTreeView(this); // mTree is a class member
treeModel = new QStandardItemModel(); // also a class member
proxymodel = new MySortFilterProxyModel(); // for sorting
proxymodel->setSourceModel(treeModel);
mTree->setModel(proxymodel);
и специальный слот для приема сигнала:
private slots:
void getSelectedIP(const QModelIndex &);
подключить сигнал и слот:
connect(mTree, SIGNAL(doubleClicked(const QModelIndex &)),
this, SLOT(getSelectedIP(const QModelIndex &)));
реализация слота, и программа вылетела в этом коде:
void HostTreeFrame::getSelectedIP(const QModelIndex &index)
{
QStandardItem *selectedItem = treeModel->itemFromIndex(index);
qDebug(QString::number(index.row()).toLatin1().data());
qDebug(QString::number(index.column()).toLatin1().data());
qDebug("1");
QString selectedIPString = selectedItem->text(); // program crashed here, selectedItem == nullptr
qDebug("2");
}
EDIT:
selectedItem
- это nullptr
, поэтому программа аварийно завершилась, но почему это nullptr?