我想在按下鼠标左键时生成项目符号(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时,我都需要做些什么才能使其绘制Bullets。
void Shooter::mousePressEvent(QMouseEvent *n)
{
     if(n->button()==Qt::LeftButton){

}

在此先感谢您的帮助。

最佳答案

您应该在类(class)中添加一个成员,该成员包含生成的项目符号。
将其放入专用部分的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ßnoim beim lernen! :)

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

关于c++ - 按下鼠标按钮时如何生成QRect?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53786581/

10-10 21:23