Alex
Қыр. 15, 2016, 7:37 Т.Қ.

QGraphicsScene QGraphicsItem QgraphicsView

qgraphicsscene, QGraphicsView, Qt

Добрый день Евгений, изучаю ваши уроки про рисование в среде Qt. Пытаюсь написать игру сапёр, начал с графики и остановился. У меня получилось создать поля с минами фиксированного размера, но моя цель сделать так же как и в Сапёре который идёт в Windows 7. Хочется сделать виджет который будет динамически перерисовывать элементы при увеличении экрана. На сцену ложатся по координатам внутри этого прямоугольника элементы. Есть система координат сцены которая задаётся например

QGraphicsScene *m_scene;
m_scene->setSceneRect(0, 0, 220, 240);

То есть наша область для отрисовки указанна. Я подобрал размер исходя из минимального значения виджета. А как быть когда размер виджета меняется, нужно ли увеличивать размер сцены ? Повторюсь, моя цель при увеличении окна программы пропорционально увеличивать элементы не выходя за пределы разрешения экрана по длине и ширине. Жду вашего ответа спасибо.

Заготовку проекта приложил. 

drawing-1.zip

Ол саған ұнайды ма? Әлеуметтік желілерде бөлісіңіз!

3
Evgenii Legotckoi
  • Қыр. 15, 2016, 8:39 Т.Қ.
  • Жауап шешім ретінде белгіленді.

Добрый день, folax.

Да. Нужно менять и размер графической сцены. В первую очередь это необходимо для уменьшения графической сцены. Если мы добавляем элементы на графическую сцену вне её пределов, то графическая сцена увеличивается автоматически, а вот при удалении элементов, размер графической сцены не меняется. Поэтому лучше пересчитывать всё это добро, вместе с минными полями и т.д.

Но я бы порекомендовал бы реализовать эту игру на Qt QML. Честно, мороки меньше будет. Можно будет обойтись одним GridLayout, который будет спозиционирован якорями. И размеры всего будут изменяться автоматически при должной настройке.

    Alex
    • Қыр. 15, 2016, 11:03 Т.Қ.
    Спасибо Вам за хороший понятный ответ. Попробую дело довести до конца. И потом уже попробую сделать графику на QML, просто до него руки не дошли.
      Alex
      • Қар. 3, 2016, 3:49 Т.Қ.

      Добрый день Евгений, окончил проект. Спасибо за ваши уроки, с них началась моя программа. Как будет время гляньте, скажите как человек с опытом справился с задачей или нет. Сейчас хочу освоить QML и сделать как вы говорили, графику на QML.

      drawing-2.zip

        Пікірлер

        Тек рұқсаты бар пайдаланушылар ғана пікір қалдыра алады.
        Кіріңіз немесе Тіркеліңіз