我想在按下鼠标左键时生成项目符号(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){
}
预先感谢您的帮助。
答案 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()