Qt GraphicsView растягивает сцену, чтобы соответствовать

Итак, я использую Qt и C++ в качестве среды.

Я рисую QGraphicsView в своем пользовательском интерфейсе.

Затем я создаю сцену и добавляю к ней линии. Я просматриваю массив из 5000 точек и рисую линии, соединяющие каждую точку.

QGraphicsScene *scene = new QGraphicsScene();
QPen pen2 = QPen(Qt::blue, 8.0);
int j=1;
for (int i=1; i<5000; i++)
{
    scene->addLine(xArray[i],yArray[i],xArray[j],yArray[j], pen2);
    j++;
}

Проблема в том, что числа, которые я собираю, очень малы, например. 2.000e-12. Цифры будут постоянно меняться в зависимости от приложения. Как я могу настроить свою сцену так, чтобы она растянулась, чтобы заполнить мой QGraphicsView. Теперь все, что я вижу, это точка в центре моего зрения. Я имею смысл?


person JohnStudio    schedule 15.10.2010    source источник


Ответы (3)


Использование sceneRect вашего QGraphicsScene в QGraphicsView::fitInView() выполнит масштабирование для вас .

person Stephen Chu    schedule 15.10.2010
comment
должно быть что-то не так с моим синтаксисом?? ui-›graphicsView-›fitInView(scene-›sceneRect()); понятия не имею?? - person JohnStudio; 16.10.2010
comment
Я не совсем понимаю, что вы имеете ввиду. Вы получили ошибку времени компиляции / компоновки или она не масштабируется так, как вы этого хотите? Больше кода и ошибок/описаний будет более полезным. - person Stephen Chu; 17.10.2010

Я никогда не использовал его сам, но в Qt doc есть

void QGraphicsView::scale ( qreal sx, qreal sy )

что позволяет масштабировать вид по осям x и y. Если этого недостаточно, вы можете (если это возможно в вашем проекте) масштабировать вручную, когда значения слишком малы или слишком велики, когда вы рисуете свои линии и применяете тот же коэффициент ко всему остальному. Но если это возможно, я бы использовал метод масштабирования, включенный в Qt.

Надеюсь это поможет.

person Live    schedule 15.10.2010
comment
это тоже не работает для меня, и я не могу найти хорошую документацию в Интернете? ui-›graphicsView-›setSceneRect(x1,y1,x2,y2) ??? - person JohnStudio; 16.10.2010

проверьте, помогает ли этот код. Это просто соответствует изображению на GraphicsView

m_Scene.setSceneRect(m_QImage.rect());

m_Scene.addPixmap(QPixmap::fromImage(m_QImage,0));

m_GraphicsView.setScene(&m_Scene);

m_GraphicsView.fitInView(m_QImage.rect());
person Naga    schedule 04.03.2011