QGraphicsItem change color
Здравствуйте. Помогите мне пожалуйста понять как правильно обратиться к item на сцене и изменить ей цвет. Мне это нужно для расскраски графа. Вот мой проект: https://github.com/Allyans3/PaintGraph .
По нажатии на кнопку должен изменяться цвет предмета на сцене.
Также у меня есть список вершин QList<Node*> nodes; доступ к которому есть через scene->nodes. Помогите прошу.

Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.Ол саған ұнайды ма? Әлеуметтік желілерде бөлісіңіз!
Пікірлер
Ua
- Unknown akadamn
- Қаң. 24, 2025, 5:14 Т.Қ.
Qt - Тест 001. Сигналы и слоты
- Нәтиже:84ұпай,
- Бағалау ұпайлары4
Ua
- Unknown akadamn
- Қаң. 24, 2025, 4:22 Т.Қ.
Qt - Тест 001. Сигналы и слоты
- Нәтиже:42ұпай,
- Бағалау ұпайлары-8
Соңғы пікірлер
ИМ
Django - Оқулық 017. Теңшелген Django кіру беті Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
Игорь МаксимовҚар. 22, 2024, 9:51 Т.Қ.

Evgenii LegotckoiҚаз. 31, 2024, 11:37 Т.Қ.
Qt Creator көмегімен fb3 файл оқу құралы Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
ИМ
Django - Сабақ 064. Python Markdown кеңейтімін қалай жазуға болады Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
Игорь МаксимовҚаз. 5, 2024, 4:51 Т.Қ.
QML - Сабақ 016. SQLite деректер қоры және онымен QML Qt-та жұмыс істеу Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
Енді форумда талқылаңыз
f
Рисование на QGraphicsScene при зажатой кнопке мыши Подскажите, пожалуйста! Как данный класс можно дополнить, чтобы созданные объекты можно было перемещать мышкой по сцене?
firstlunoxodАқп. 15, 2025, 1:46 Т.Қ.

ДмитрийАқп. 3, 2025, 4:24 Т.Қ.
не запускается компьютер!!! Не запускается компьютер (точнее работает блок , но сам монитор вообще жесть)В общем я ничего с интернета не скачивала в последнее время. На компе никаких левых пр…
Нужно запретить перемещение только некоторых итемов, остальные перемещать можно. Вопрос решен. Узнать QModelIndex элемента на который мы перетаскиваем другой элемент, можно с помощью функции indexAt(event->position().toPoint()) представления QTreeViev вызываемой в переопр…
OAuth2.0 через VK, получение email Спасибо большое за помощь и простите за то что отнял время своей невнимательностью.
Добрый день!
Вы можете использовать метод setBrush() , чтобы поменять кисть, которой отрисовывали. Но я бы ещё порекомендовал наследоваться от QAbstractGraphicsShapeItem и переопределить метод paint, тогда при переопределении некоторых специально для этого назначенных переменных сможете свободно делать отрисовку в данном классе.
P/S/ Программный код пожалуйста добавляйте через специальное диалоговое окно.
Я наследовал класс. И теперь когда я пытаюсь менять цвет, то он не меняеться.
И я еще заметил что в qDebug выводит то что моя вершина имеет черный цвет хотя она красная.
Ну вот вы выставляете некотроый цвет в методе paint
Предусмотрите логику и внешний метод, который будет устанавливать вам необходимый цвет для этой части кода, а то так вызов метода setBrush() в mainwindow.cpp бесполезен получается.
а почему вершина по дефолту черная хотя цвет у нее красный?
Мне бы просто какой-то живой пример что бы я понял. Этот метод должен быть не в классе mainwindow? этот метод должен быть paint()?
потому, что метод brush() объекта класса Node и метод объекта класса brush() QPainter - это методы разных объектов. painter используется внутри Node.
Вы путаете понятия и смешиваете в одно два разных объекта. А то, что brush() возвращает чёрный - всё правильно. вы его никогда не устанавливали в красный
в принципе... думаю, что не обязательно создавать метод. Можно использовать тот же самый brush(), но внутри метода paint(), а цвет снаружи устанавливать через setBrush
т.е. мне надо опять вызвать метод paint() из класса mainwindow что бы изменить цвет или нужно как то переопределить метод paint?
и если мне надо будет вызывать метод пейнт то каким образом мне указать какому итему мне надо будет менять цвет
Практически.
Вы можете вызвать setBrush() в mainwindow.cpp, где пытаетесь поменять цвет, а потом вызвать update() на графической сцене. Метода paint() вызывается автоматически, при этом его нельзя вызывать вручную в силу архитектуры графической сцены и графических объектов.
А в методе paint|()
поменяйте ту строку, на которую я вам указывал, не такую
Думаю, что тогда Вам станет понятно, как это работает.
Вы в mainwindow в том куске кода, что приводили в самом начале очевидно уже знаете, какой именно item вам нужен, нужно просто вызвать метод setBrush на нём и вызывать update на графической сцене, там само всё перерисуется как надо. paint - это внутренний метод, его извне вызывать нельзя. (в том плане, что он автоматически вызывается сам в стекк вызовов методов в графической сцене, просто извне его вручную не вызывают никогда, это и в документации сказано)
Хорошо. Сейчас попробую
Спасибо вам большое). Теперь цвет меняеться. А если мне надо изменить цвет ребра (там setPen) то так же?
В данном случае можно также.
Просто у вас собственная логика отрисовки в методе paint, поэтому setBrush не имел ожидаемого эффекта. Вы устанавливали кисть, но не использовали её.
Спасибо Вам большое за помощь. Теперь все работает и я понял как метод paint устроен.
Пожалуйста, будут ещё вопросы, не стесняйтесь их задавать на форуме. Я стараюсь отвечать, когда есть свободное время, да и другие более опытные пользователи сайта тоже отвечают по возможносьт, ну и сами не стесняйтесь помогать другим.
Хорошо)