Название: indexAt в QtreeWidget Отправлено: hadey от Март 05, 2012, 15:41 Добрый день.
Может кто сталкивался: indexAt в QtreeWidget возвращает QModelIndex(-1,-1,0x0,QObject(0x0) ). С чем это может быть связано? Название: Re: indexAt в QtreeWidget Отправлено: Bepec от Март 05, 2012, 15:44 Эм... Нет запрашиваемого элемента? утечка памяти? затирка указателями?
Название: Re: indexAt в QtreeWidget Отправлено: GreatSnake от Март 05, 2012, 15:44 С чем это может быть связано? С тем, что QTreeView ничего не нашел по заданной координате.Показывай код. Название: Re: indexAt в QtreeWidget Отправлено: hadey от Март 05, 2012, 15:46 ui->treeWidget->setSelectionMode(QAbstractItemView::SingleSelection);
ui->treeWidget->setDragEnabled(true); ui->treeWidget->viewport()->setAcceptDrops(true); ui->treeWidget->setDropIndicatorShown(true); ui->treeWidget->viewport()->installEventFilter(this); QTreeWidgetItem *lParentItem; while (lQuery.next()) { lParentItem = new QTreeWidgetItem(ui->treeWidget); ui->treeWidget->addTopLevelItem(lParentItem); //наименование lParentItem->setText(0, lQuery.value(0).toString()); //идентификатор lParentItem->setText(1, lQuery.value(1).toString()); lParentItem->setText(4, "0"); } Название: Re: indexAt в QtreeWidget Отправлено: GreatSnake от Март 05, 2012, 15:50 2 hadey:
в упор не вижу вызова indexAt(). Название: Re: indexAt в QtreeWidget Отправлено: hadey от Март 05, 2012, 15:50 bool MainWindow::eventFilter(QObject *aObject, QEvent *aEvent)
{ if (aObject == ui->treeWidget->viewport() && (aEvent->type() == QEvent::DragMove)) { qDebug() << ui->treeWidget->indexAt(QCursor::pos()); } return false; } Название: Re: indexAt в QtreeWidget Отправлено: GreatSnake от Март 05, 2012, 15:54 bool MainWindow::eventFilter(QObject *aObject, QEvent *aEvent) Ну дык правильно, посылаешь в виджет левые координаты и удивляешься.{ if (aObject == ui->treeWidget->viewport() && (aEvent->type() == QEvent::DragMove)) { qDebug() << ui->treeWidget->indexAt(QCursor::pos()); } return false; } Используй правильные координаты: Код
Название: Re: indexAt в QtreeWidget Отправлено: hadey от Март 05, 2012, 15:58 ok, спасибо огромное.
Название: Re: indexAt в QtreeWidget Отправлено: GreatSnake от Март 05, 2012, 16:05 На всякий случай - у виджета координаты считаются относительно родительского виджета. QCursor::pos() возвращает позицию мыши на текущем экране, т.е. её нужно было преобразовать так:
Код
Название: Re: indexAt в QtreeWidget Отправлено: hadey от Март 05, 2012, 16:13 Да, после твоего ответа я все это вспомнил:) Взгляд со стороны, как говорится: несколько часов сидел тупил...
|