Qt C++:如何在按下按钮之前进行for循环
Posted
技术标签:
【中文标题】Qt C++:如何在按下按钮之前进行for循环【英文标题】:Qt C++: How to make a for loop until a button is pressed 【发布时间】:2022-01-24 02:57:17 【问题描述】:我一直在尝试使用 Qt 用 C++ 制作 GUI Blackjack 游戏。然而,我在路上遇到了路障。去年我用纯 C++ 制作了游戏和游戏逻辑(链接如下)。我正在尝试使用相同的代码来构建游戏的 GUI 版本Github/Blackjack。
这主要是为了让卡片出现,添加这些卡片的价值,经销商和玩家设置。
在 C++ 版本中,我制作了一个所有玩家的向量,并在其末尾添加了经销商,然后使用 for 循环,我将遍历玩家以让他们玩。
在 Qt 中,我为播放器控件创建了一个带有两个按钮“Hit”和“Stand”的小部件。 “Hit”按钮很简单,将按钮的点击事件与播放器的hit成员函数联系起来。
ctrl = new PlayerControl(nullptr, mainPlayer);
connect(ctrl->ui->hitButton, &QPushButton::clicked, [mainPlayer]
mainPlayer->hit();
);
遍历向量的代码:
for (size_t i = 0; i < players.size(); i++)
if (i == playerPos - 1)
ctrl->setVisible(true);
//how to make the loop to pause here until the user presses the
//"Stand button", and then proceed with the rest of the loop?
else if (i == players.size() - 1)
dealerPlay();
else
computerPlay(players[i]);
我将非常感谢任何帮助。 :)
【问题讨论】:
【参考方案1】:我不太了解您显示的代码或它与您帖子标题中的问题的关系。我只是回答这个问题,即:
如何在按下按钮之前进行 for 循环
答案是您可能不想这样做,因为这会涉及多线程或某种复杂的并发机制。在编写 GUI 时,应用程序的主线程通常处于一个循环中,等待来自操作系统的事件消息(如点击和按键)。当它收到这样的消息时,它应该快速处理它们,然后返回等待下一条消息。
在 Qt 中,您可以通过覆盖 QMainWindow 类中的函数或将 Qt 信号连接到插槽来处理这些事件。
因此,您将有一些长期存在的变量来跟踪游戏的状态,并且当您检测到玩家有移动(即通过单击按钮),您将更新这些变量,更新屏幕上显示的任何数据,然后从您的事件处理程序返回,以便您可以处理下一个事件。
【讨论】:
以上是关于Qt C++:如何在按下按钮之前进行for循环的主要内容,如果未能解决你的问题,请参考以下文章