Qt Как создать QBrush, используя RGB Color с QColor, и изменить его позже?

На данный момент я использую это для создания QBrush:

QBrush *goldBrush = new QBrush(QColor(212,175,55));
scene->addRect(0,415,20,50,noPen,*goldBrush);

Но, видимо, это утечка памяти.

Как еще ты мог это сделать? Я пробовал это:

QBrush greyBrush(QColor(212,175,55));
greyBrush.setColour(QColor(120,60,55))

Но это тоже не сработало. Я хочу иметь возможность объявить кисть одним цветом, а затем изменить его.

Редактировать: полная проблема моя плохая.

2 ответа

Решение

Единственный способ изменить цвет кисти - через QBrush::setColor, Кисть берет копию указанного вами цвета, а не ссылку.

QBrush my_brush;
QColor red(Qt::red);
my_brush.setColor(red); // my_brush has its own color member internally
                        // and _not_ a refernece to red

Может быть, вы привыкли к другим языкам программирования, таким как Java, где в основном все является ссылкой. В C++ есть семантика значений.

Не забудьте установитьbrush style

      QPainter painter(this);
QBrush brush;
QColor brushColor;
brushColor.setRgb(192 ,237, 166);
brush.setColor(brushColor);
brush.setStyle(Qt::SolidPattern);
Другие вопросы по тегам