Приобрести книгу можно на сайте ozon.ru и в электронном виде на Google Play:
11 Replies to “Глава 21 – Графическое представление”
Доброго времени суток.
Подскажите, пожалуйста.
Я вникаю в листинги и пытаюсь их сам воспроизвести.
В проекте CustomGraphicsView в листинге 21.4 я при создании сцены вместо
QGraphicsScene scene(QRectF(-100, -100, 640, 480);
написал:
QGraphicsScene scene(-100, -100, 640, 480);
Из-за чего при втором перемещении эллипса он соскакивал на изначальные координаты и перемещался оттуда.
Из-за чего так происходит?
Александр, если Вы только изменили вызов конструктора QGraphicsScene(const QRectF &sceneRect, QObject *parent = Q_NULLPTR) на QGraphicsScene(qreal x, qreal y, qreal width, qreal height, QObject *parent = Q_NULLPTR) то результат работы программы должен быть аналогичным как и до изменения. Это было действительно единственное изменение в коде программы?
Прошу прощения!
Я допустил глупую опечатку при реализации mouseReleaseEvent написал QGraphicsItem::mousePressEvent(pe);
И никак не привыкну к механизму “активного проекта” в Qt creator – исправил свой проект, а запустил Ваш.
Еще раз извиняюсь, спасибо за оперативный ответ!
Здравствуйте, Макс!
На странице 321, я полагаю, опечатка. Написано: “… Это задача выполняется с помощью методов QGraphics::shape() и QGraphicsItem::collidesWith. …”. Правильно: “QGraphicsItem::shape()” и “QGraphicsItem::collidesWithItem”. Да, и не “Это”, а “Эта” 🙂
P.S.: Макс, не подумайте, что я вредный читатель, просто внимательный.
Здравствуйте, Вячеслав!
Вы правы, это опечатка. Должно быть QGraphicsItem::shape() и “Эта задача”.
Мне очень нравятся Ваши замечания! Пожалуйста продолжайте и дальше! Я Вам очень признателен!
Добрый день.
В целом книга очень хорошая, но я добрался до главы 22 (анимация) , но пока не нашел где описывается работа с collidesWithItem. А ради этого я книгу и покупал – для новичка это сложный этап.
Может быть к ней существует какое-то дополнение или это будет описано дальше ?
Может кому-нибудь поможет – если у вас выдает ошибку “QObject::connect: No such slot QGraphicsView:: …”, то просто замените в функции connect два параметра:
QObject::connect(bZoomIn, &QPushButton::clicked, pView, &MyView::slotZoomIn);
This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish.AcceptRead More
Privacy & Cookies Policy
Privacy Overview
This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.
Доброго времени суток.
Подскажите, пожалуйста.
Я вникаю в листинги и пытаюсь их сам воспроизвести.
В проекте CustomGraphicsView в листинге 21.4 я при создании сцены вместо
QGraphicsScene scene(QRectF(-100, -100, 640, 480);
написал:
QGraphicsScene scene(-100, -100, 640, 480);
Из-за чего при втором перемещении эллипса он соскакивал на изначальные координаты и перемещался оттуда.
Из-за чего так происходит?
Александр, если Вы только изменили вызов конструктора QGraphicsScene(const QRectF &sceneRect, QObject *parent = Q_NULLPTR) на QGraphicsScene(qreal x, qreal y, qreal width, qreal height, QObject *parent = Q_NULLPTR) то результат работы программы должен быть аналогичным как и до изменения. Это было действительно единственное изменение в коде программы?
Прошу прощения!
Я допустил глупую опечатку при реализации mouseReleaseEvent написал QGraphicsItem::mousePressEvent(pe);
И никак не привыкну к механизму “активного проекта” в Qt creator – исправил свой проект, а запустил Ваш.
Еще раз извиняюсь, спасибо за оперативный ответ!
Нет проблем. Главное, ошибка нашлась.
Здравствуйте, Макс!
На странице 321, я полагаю, опечатка. Написано: “… Это задача выполняется с помощью методов QGraphics::shape() и QGraphicsItem::collidesWith. …”. Правильно: “QGraphicsItem::shape()” и “QGraphicsItem::collidesWithItem”. Да, и не “Это”, а “Эта” 🙂
P.S.: Макс, не подумайте, что я вредный читатель, просто внимательный.
Здравствуйте, Вячеслав!
Вы правы, это опечатка. Должно быть QGraphicsItem::shape() и “Эта задача”.
Мне очень нравятся Ваши замечания! Пожалуйста продолжайте и дальше! Я Вам очень признателен!
Обязательно продолжу и дальше. Буду очень рад, если эти замечания помогут в следующем издании книги!
Да, Вячеслав! Все комментарии, замечания, предложения, пожелания будут обязательно учтенны в следущем издании! Спасибо!
Добрый день.
В целом книга очень хорошая, но я добрался до главы 22 (анимация) , но пока не нашел где описывается работа с collidesWithItem. А ради этого я книгу и покупал – для новичка это сложный этап.
Может быть к ней существует какое-то дополнение или это будет описано дальше ?
Антон, collidesWithItem в книге не рассматривается.
Может кому-нибудь поможет – если у вас выдает ошибку “QObject::connect: No such slot QGraphicsView:: …”, то просто замените в функции connect два параметра:
QObject::connect(bZoomIn, &QPushButton::clicked, pView, &MyView::slotZoomIn);