【发布时间】:2020-09-16 17:45:03
【问题描述】:
我找不到哪里做错了。我想在发生特定事件时更改我的项目(QGraphicsRectItem)的颜色。事实是,似乎一旦调用了覆盖绘制方法,无论如何颜色都不会改变。这是我所做的简单代码:
item.h
class Item : public QGraphicsRectItem
{
public:
Item(QGraphicsView *graphView);
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *) override;
private:
QPointF newPos;
QGraphicsView *graph;
};
item.cpp
Item::Item(QGraphicsView *graphWidget) : graph(graphWidget) { }
void Item::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *)
{
painter->setPen(Qt::NoPen);
painter->setBrush(Qt::black);
painter->drawEllipse(-7, -7, 20, 20);
}
main.cpp
int main(int argc, char *argv[])
{
srand(QDateTime::currentDateTime().toMSecsSinceEpoch());
QApplication a(argc, argv);
QGraphicsScene scene;
QGraphicsView view(&scene);
Item *item = new Item(&view);
scene.addItem(item);
item->setPos(0, 0);
item->setBrush(Qt::red);
item->update();
view.show();
return a.exec();
}
【问题讨论】:
-
我不明白您对代码的期望。您在paintEvent中强制您的画笔为黑色,并且您没有在paint事件中绘制矩形项目。
标签: c++ qt qgraphicsview qgraphicsscene qgraphicsitem