Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > [Qt] QGraphicsView - определить где кликнули мышом


Автор: kosmonaFFFt 27.10.2009, 21:59
Доброго времени суток...
Имеется QGraphicsView, на котором через QGraphicsScene рисуется сетка:
Код

MainForm::MainForm()
{
    _widget.setupUi(this);
    //Здесь код...
    _widget.scene->setScene(&_scene); //scene - объект QGraphicsView
};

// Рисование сетки...
void MainForm::drawTor(void) {
    _scene.clear();
    QRectF rect = _widget.scene->sceneRect();
    qreal xSize = rect.right() - rect.left();
    qreal ySize = rect.bottom() - rect.top();
    qreal xStep = xSize / _tor.xSize();
    qreal yStep = ySize / _tor.ySize();
    for (qreal x = rect.left(); x <= rect.right(); x += xStep) {
        _widget.scene->scene()->addLine(x, rect.top(), x, rect.bottom());
    }
    for (qreal y = rect.top(); y <= rect.bottom(); y += yStep) {
        _widget.scene->scene()->addLine(rect.left(), y, rect.right(), y);
    }
}

в итоге получается то, что на изображении вставлено...
Пытаюсь определить, где не QGraphicsView нажата кнопка мыши, переопределив у главной формы
mousePressEvent(QMouseEvent * evt), но в evt содержатся координаты клика относительно формы,
можно ли как нибудь узнать координаты относительно scene? Цель всего этого - отследить в какой клетке сетки был клик...
Или лучше разместить на scene кучу мелких кнопочек, и смотреть нажатия на них? Или есть еще какой способ получше?
Заранее спасибо...

Автор: CuteBunny 28.10.2009, 06:37
На счет, QGraphicsView не знаю, но вот насчет QGraphicsScene точно знаю, что можно определять координаты, там где клик мыши был. Для этого надо создать свою графическую сцену и переопределить событие на щелчок мыши.

Если в документации порыться, то в обще, фреймворк Graphics View от кути имеет сложную и хитрую архитектуру, основанную на MVC.

Есть аж три рода координат: координаты айтемов на сцене, координаты самой сцены и координаты представления.

Автор: kosmonaFFFt 28.10.2009, 11:52
Блин, точно, можно ж сцену самому переопределить спокойно...
Спасибо большое...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)