crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Неадекватно работает QGraphicsItem::contains
jerdeks
  опции профиля:
сообщение 14.9.2011, 11:56
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 6
Регистрация: 14.9.2011
Пользователь №: 2874

Спасибо сказали: 0 раз(а)




Репутация:   0  


Есть главные айтем - main_item. На нем лежат остальные объекты. Хочу их перетаскивать. Функции itemAt недостаточно, потому что она определяет не точную границу фигуры, а прямоугольник, в который она вписана. Ну то есть элипс например таскается за несуществующий угол. Функция contains определяет границы правильно, но иногда возвращает false, даже если тыкаю явно в центр фигуры 0_о Собственно, в этом вся проблема - то таскаются айтемы, то нет. Объясните, что я не так делаю, пожалуйста =)
lockScene - чтобы таскать main_item, собственно для вопроса это не нужно

void MyScene::mousePressEvent(QGraphicsSceneMouseEvent* mouseEvent) {
    switch (mouseEvent->button()) {
    case Qt::LeftButton :
        if ((curItem = itemAt(mouseEvent->scenePos())) &&
            curItem->contains(mouseEvent->scenePos()) &&
            curItem != view->main_item)
            lockCurItem = true;
        lockScene = !lockCurItem;
        break;
    }
}


А, да. view это static_cast<QGraphicsView*>(this->parent)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 24.4.2024, 20:06