按下鼠标按钮时如何生成QRect?

时间:2018-12-14 20:36:32

标签: c++ qt

我想在按下鼠标左键时生成项目符号(QRect)。

当前唯一可以做的就是移动和旋转QRect“ Spieler”。 希望您能帮助我,并解释如何做。

这是我绘制QRect“ Spieler0”的地方,Spieler是Player的德语版。

void Shooter::paintEvent(QPaintEvent * p)
{
QRect Spieler0 (Spieler0X,Spieler0Y,SpielerBreite,SpielerHoehe);
//QRect Kugel    (Spieler0X+50,Spieler0Y+50,5,5);
QPainter paint(this);
paint.translate(Spieler0X + SpielerBreite/2,Spieler0Y+SpielerHoehe/2);
paint.rotate(Grad);
paint.translate(-Spieler0X-SpielerBreite/2,-Spieler0Y-SpielerHoehe/2);
paint.drawRect(Spieler0);
//paint.drawRect(Kugel);

update();
}

这是我的QMousePressEvent,每当我按一下MouseButton时,我必须做些什么才能使其绘制子弹。

void Shooter::mousePressEvent(QMouseEvent *n)
{
     if(n->button()==Qt::LeftButton){

}

预先感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您应该在班级中添加一个成员,该成员可以容纳生成的项目符号。 将其放入“ private”部分的shooter.h文件中:

QList<QRect> m_kugeln;

这样,只要存在该类,就可以保留项目符号信息。

在mousePressEvent函数中,添加以下行以将项目符号添加到mouseclick上的列表中

m_kugeln.append(QRect(Spieler0X + 50, Spieler0Y + 50, 5, 5));

将其放入您的paintEvent类中以绘制所有项目符号:

for (auto kugel : m_kugeln)
{
    paint.drawRect(kugel);
}

代码未经测试,但可以正常工作。 当有不清楚的地方时,随时问。

VielSpaßnoch beim lernen! :)

编辑:如果要在项目符号离开屏幕后删除它们,可以使用以下功能之一:

m_kugeln.removeOne()
m_kugeln.removeAt()