Расширенный поиск
1
16L62 августа 2020 г. 11:17

C++QT QGraphics преобразование координат

QGraphicsItem Qt

В переопределенной функции
mousePressEvent(QGraphicsSceneMouseEvent event) класса QGraphicsItem (или подкласса от него)
есть метод
QPoint QGraphicsSceneMouseEvent::screenPos() const
позволяющий получить экранные координаты в точке
нажатия мыши:
……

Михаиллл1 сентября 2019 г. 11:09

QtКак обращаться к объектам QGraphicsItem созданным в QGraphicsView

QGraphicsView, QGraphicsItem

Добрый день.
С помощью такого класса создаю эллементы в QGraphicsView

class MoveItem : public QObject, public QGraphicsItem
{
    Q_OBJECT
public:
    explicit MoveItem(QObject *parent = 0);
    ~MoveItem();
    int id;
    int width, height;

private:
    QRectF boundingRect() const;
…
Михаиллл20 июля 2019 г. 9:52

QtКак добавлять на QGraphicsScene элементы в виде картинок

QGraphicsItem, qgraphicsitem

Добрый день.
Взял код из этой статьи.
Кочу добавлять эллементы QGraphicsItem не в виде прямоугольника, а в виде картинки.
Попробовал сделать так, но картинка не добавляется.
Скажите пожалуйста, как сделать правильно?

void MoveItem::paint(QPainter *painter, cons…
f
fryn38 мая 2018 г. 8:44

C++Нарисовать дугу в QGraphicsItem

QGraphicsItem, Qt, QGraphicsScene

Необходимо уметь рисовать направленный граф.
В примерах QT нашел проект elasticnodes . Его переделал под свою задачу.
Получилось реализовать создание вершин/стрелок и их выделение/удаление/перемещение. Вот только не получается сделать дугу на самого себя и его область выделения. …
Евгений Легоцкой22 октября 2017 г. 4:54

QtQt/C++ - Урок 072. Пример векторного редактора на Qt

QGraphicsItem, QGraphicsScene, QGraphicsView, Vector Editor, QGraphicsObject

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

А именно это был векторный редактор, который может:

  • Создавать прямоугольники
  • Изменять размер этих прямоугольников
  • Крутить прямоугольники вокруг центра
  • Делать заливку прямоугольников
  • Делать заливку прямоугольников градиентом
  • Изменять ширину абриса прямоугольника
  • Устанавливать цвет абриса прямоугольника
  • Создавать линии
  • Задавать ширину и цвет создаваемой линии
  • Делать ломанные линии из линий по двойному щелчку добавляя на линии точки излома
  • Выделять все графические объекты и перетаскивать их кучкой
  • Сохранять полученное изображение в SVG файл, а также восстанавливать все графические объекты из этого файла

На выполнение этого проекта в своё время (1,5 года назад) я потратил порядка 36 часов рабочего времени... сейчас на это ушло бы поменьше времени.

i
istiksi7 мая 2017 г. 7:41

PyQt5Не приходят mousePressEvent от дочерних item'ов а

PyQT5 QT5 QGraphicsItem

На QGraphicsScene размещен переопределенный QGraphicsRectItem, в который добавлены с помощью addItem несколько дочерних QGraphicsRectItem. Фильтр событий для child'ов включен (setFiltersChildEvents(True)). По идее, любой клик на child, должен вызывать mousePressEvent у родительского QGraphicsR…

d
den14128017 января 2017 г. 6:17

QtСмена цвета объекта при клике мышью

Qt, QGraphicsItem, QGraphicsScene

Вот проект. При нажатии на квадрат он меняет цвет. Хотелось бы, чтобы он цвет менял, но не двигался. Мне зафиксировать сцену нужно или что сделать? Может кто-нибудь изменить код, чтобы квадрат не двигался, а лишь изменял цвет.

Евгений Легоцкой6 декабря 2015 г. 9:47

QtQt/C++ - Урок 033. Работаем с QGraphicsObject вместо QGraphicsItem

QGraphicsScene, GameDev, QGraphicsItem, Qt, QGraphicsObject

Моё внимание обратили на то, что для работы с сигналами и слотами вместо класса наследованного от QGraphicsItem и от QObject можно использовать класс наследованный от QGraphicsObject . И действительно, если немного покопаться в исходниках QGraphicsObject , то обнаружится, что это класс наследованный от QGraphicsItem и от QObject . То есть также применяется множественное наследование, только в данном случае все велосипеды уже написаны до нас. Поэтому попробуем поработать с данным классом на примере игровой механики.

А именно, предлагаю написать программу, в которой Мы будет перемещать героя кликом мыши по графической сцене, как в любой РПГ наподобие Diablo.

Структура проекта для работы с QGraphicsObject

  • QGraphicsObjectExample.pro - профайл проекта;
  • main.cpp - основной файл исходных кодов;
  • widget.h - заголовочный файл окна приложения;
  • widget.cpp - файл исходных кодов окна приложения;
  • customscene.h - заголовочный файл кастомизированной графической сцены ;
  • customscene.cpp - файл исходных кодов кастомизированной графической сцены;
  • triangle.h - заголовочный файл класса героя-треугольника, который будет передвигаться;
  • triangle.cpp - файл исходных кодов класса героя-треугольника.
Евгений Легоцкой4 декабря 2015 г. 12:18

QtQt/C++ - Урок 027. Полиморфизм в Qt на примере геометрических фигур в QGraphicsScene

QGraphicsScene, Qt уроки, figure, QGraphicsItem, ооп, Полиморфизм, пример, Qt, square, triangle

Полиморфизм является одной из парадигм ООП (объектно-ориентированное программирование). Полиморфизм реализует способность базового класса предоставлять свойства и методы, реализация которых не известна для будущих классов, которые будут наследованы от данного класса. То есть базовый класс в данном случае имеет весь необходимый набор методов для реализации поставленных задач, но конкретная реализация определённых методов возлагается на классы потомки. И, как правило, базовый класс является абстрактным, то есть от него не создаются объекты.

Например, необходимо реализовать программу, в которой имеется возможность рисовать несколько геометрических фигур мышью на графической сцене , выбирая текущую фигур с помощью кнопок в приложении. Для этого можно создать несколько классов, каждый из которых будет реализовывать весь необходимый функционал, и фактически дублировать в каждом классе большую часть кода, усложняя и запутывая разработку. Либо можно создать один базовый класс, например, Figure , который будет наследован от QGraphicsItem , и реализовать весь основной функционал в данном классе, а потом уже создать три класса, которые будут наследованы от данного класса, но реализовать в них только метод отрисовки самой фигуры: Romb, Square, Triangle.

На ниже следующем рисунке показана логика наследования для базового класса Figure . Применено также множественное наследование класса Figure для реализации работы с сигналами и слотами .

Евгений Легоцкой7 октября 2015 г. 11:26

QtQt/C++ - Урок 023. Перетаскивание QGraphicsItem на QGraphicsScene мышью

QGraphicsScene, Qt урок, QGraphicsItem, перетаскивание, Qt

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

Давайте разберёмся, как это сделать.

Структура проекта

Для демонстрации примера создаём новый проект и добавляем в него новый класс, отнаследованный от QGraphicsItem .

  • MoveGraphicsItem.pro - профайл проекта;
  • main.cpp - запускающий файл;
  • widget.h - заголовочный файл главного окна;
  • widget.cpp - файл исходных кодов главного окна;
  • moveitem.h - заголовочный файл графического элемента;
  • moveitem.cpp - файл исходных кодов графического элемента.
  • widget.ui - форма главного окна.
Card image cap
Pulsum Via

Проект для путешественников от EVILEG.

Перейти
Timeweb

Позвольте мне порекомендовать вам отличный хостинг, на котором расположен EVILEG.

В течение многих лет Timeweb доказывает свою стабильность.

Для проектов на Django рекомендую VDS хостинг

Посмотреть Хостинг
Поделиться в социальных сетях
Donate

Проект EVILEG перешёл на некоммерческую основу и будет развиваться исключительно на энтузиазме создателя сайта, энтузиазме пользователей, пожертвованиях и реферальной системе хостинга

Спасибо за вашу поддержку

Доступные способы поддержки проекта

PayPal

PatreonYooMoneyПодробнее

C++ - Тест 001. Первая программа и типы данных

  • Результат:80баллов,
  • Очки рейтинга4

C++ - Тест 001. Первая программа и типы данных

  • Результат:66баллов,
  • Очки рейтинга-1
ГР

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат:90баллов,
  • Очки рейтинга8
Последние комментарии

Qt/C++ - Урок 061. Добавление изображений в приложение методом Drag And Drop из файлового менеджера

Доброго времени суток. А если нужно и изображение и текст? Что-то потерялся немного.... // Вместо отрисовки иконки и текста будем отрисовывать только одно изображение // с н…
АС

Qt/C++ - Урок 004. QSqlTableModel или Как представить таблицу из БД в Qt?

error insert into TableExample " Количество параметров не совпадает" Я путь свой прописывала и даже бд удаляла, чтобы заново сделать, не работает. (всё остальное как у вас... Вроде ка…
i
ЛД

GameDev на Qt - Урок 1. Отслеживание перемещения мыши в QGraphicsScene

Вполне возможно, что ты не закинул graphicsView в дизайнере в виджет
ЛД

GameDev на Qt - Урок 1. Отслеживание перемещения мыши в QGraphicsScene

Кому интересно, поворот в slotTarget можно в одну строку организовать this->setRotation(90 + rotation() + qRadiansToDegrees(qAtan2(mapFromScene(point).y(), mapFromScene(point).x())));
Сейчас обсуждают на форуме
M

Sorting the added QML elements in the ListModel

legal online pharmacy
  • Nomad
  • 30 июля 2022 г. 5:42

Как работать с HTMX?

Приветствую колеги. На днях наткнулся на вот это : https://htmx.org/ На офф сайте написанно вот такая фраза: htmx gives you access to AJAX, CSS Transitions, We…
h
  • harisr
  • 25 июля 2022 г. 2:56

QT - Native App Integration

Привет, у нас уже есть собственное приложение для Android. Можем ли мы интегрировать пользовательское представление QT в приложение со всем приложением QT внутри представления. Если да, ука…

Правильный запуск сервера на vps - Django

О я как то себе дома локальный сервер создавал. Вам же нужно просто сделать ручками конфигурацию системы. Настроить Nginx ну либо Apache (тут кому что нравится). Соответственно БД и всё остально…
o

Распознание объектов

Я к тому, что, возможно, софт уже есть.
О нас
Услуги
© EVILEG 2015-2022
Рекомендует хостинг TIMEWEB