【发布时间】:2017-07-07 13:56:15
【问题描述】:
我的工作环境: Qt 5.8 MSVC2015 64bit, QT GraphicsView, QGraphicsObject, Windows 7 64 bit。
在我的应用程序中,我将多个 QGraphicsitem 添加到单个图形场景和单个图形视图中。
但我需要根据鼠标位置在 QGraphicsitem 图像顶部绘制空的绿色矩形。 所以我尝试了以下方法:
QRubberBand* _rubberBand = new QRubberBand(QRubberBand::Rectangle, this);
_rubberBand->setGeometry(QRect(MousePos.x() -2, MousePos.y() - 2, MousePos.x() + 2, MousePos.y() + 2).normalized());
_rubberBand->setAutoFillBackground(false);
QPalette pal;
pal.setBrush(QPalette::Highlight, QBrush(Qt::green));
_rubberBand->setPalette(pal);
_rubberBand->show();
QRubberBand 的问题,它会动态改变大小,我想绘制小矩形,而不是闪烁的 RubberBand。
QRubberBand 输出:
预期输出:
【问题讨论】:
-
stackoverflow.com/questions/44395296/… 的可能重复项。请注意,问题本身已经包含了很大一部分可能的解决方案。
-
@m7913d ,QPalette 没有 setColor 选项。 //pal.setColor();
-
@m7913d,不,我试过 pal.setColor(QPalette::Highlight, QColor(128,128,255));但它仍然用颜色填充整个矩形。我只需要用颜色设置边框。
-
您可能需要将画笔设置为透明。不过,您创建的答案是一个很好的解决方案。