gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 12:41:58 24 4
gpt4 key购买 nike

我想在按下鼠标左键时生成一个 Bullet (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){

}

预先感谢您的帮助。

最佳答案

您应该向类中添加一个成员来保存生成的子弹。将其放入您的私有(private)部分的 shooter.h 文件中:

QList<QRect> m_kugeln;

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

在您的 mousePressEvent 函数中添加此行以在鼠标单击时将项目符号添加到列表

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

将其放入您的 paintEvent 类中以绘制所有子弹:

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

代码未经测试,但应该可以工作。如果有什么不清楚的地方,请随时提问。

Viel Spaß noch beim lernen! :)

编辑:如果您想在项目符号离开屏幕后将其删除,您可以使用以下功能之一:

m_kugeln.removeOne()
m_kugeln.removeAt()

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com