c++ - Qt 如何使用带有 QColor 的 RGB 颜色创建 QBrush 并在以后更改它?

标签 c++ qt 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))

但这也没有用。我希望能够将画笔声明为一种颜色,然后能够更改它。

编辑:全部问题我的错。

最佳答案

改变画笔颜色的唯一方法是通过QBrush::setColor。画笔会复制您指定的颜色,不是引用。

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

也许您已经习惯了其他编程语言,例如 Java,其中基本上所有内容都是引用。在 C++ 中有 values semantics .

关于c++ - Qt 如何使用带有 QColor 的 RGB 颜色创建 QBrush 并在以后更改它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34256038/

相关文章:

对 xcode 12 的 c++20 库支持

c++ - 检查谁在骰子游戏中获胜

c++ - 在 opencv 和 Qt 中合并视频

c++ - GraphicsView 上的 Qt QColor 和 QBrush?

c++ - 比较两个 QColor 对象的颜色

c++ - 在程序代码中编码/嵌入版本号的正确方法

c++ - 为什么添加一个析构函数(即使是空的)会破坏我使用引用转发和折叠来保存引用或值拷贝的结构?

python - 当 QThread 有事件队列时,用 exit() 终止线程是否安全?

c++ - 返回使用父对象数据的对象,然后使它们无效

c++ - 在不丢失 alpha 值的情况下将 QColor 转换为 QString