这是我在SO ^ _ ^
上的第一篇文章我正在尝试使用QT框架实现letter scramble game。主要部分已经完成,但现在我惊呆了 - 我无法弄清楚如何使程序等待按钮在游戏中按下。
请帮帮我。提前致谢
这是我的游戏周期的伪代码:
//initialize grid, score, time
// accept words until timer expires
while (true) {
// draw the current state of the grid
// log board
// get current time
// report score
// check for game's end
// report time remaining
// prompt for word and converting it to char*
//HOW TO WAIT UNTILL BUTTON PRESSED????!!!!
// check whether to scramble grid
// or to look for word on grid and in dictionary
}
P.S。由于这是我在这里的第一篇文章,我将非常感谢有关如何更正确地撰写问题的任何建议。
答案 0 :(得分:3)
在我看来,你缺少的是Qt基于event-driven programming。 Qt提供您向用户显示的小部件/对象,例如按钮,窗口,控制器等。例如,QPushButton对象能够接收各种事件,例如点击鼠标按钮或按键盘键等等。
通过事件,Qt提供了一个插槽/信号机制,用于接收这些事件并对它们做出反应。因此,作为示例,在QPushButton的情况下,存在称为“按下”的信号。当用户点击按钮时,会发出其按下的信号。作为开发人员,您可以将按下的信号连接到插槽,这是您定义的功能。
例如,在一个名为MyClass的类中,它是从QObject派生的: -
QPushButton button("Select"); // create a QPushButton object
connect(button, SIGNAL(pressed()), this, SLOT(buttonPressed()));
connect语句将按钮的“按下”信号连接到名为“buttonPressed”的插槽函数。然后,您将定义该功能: -
void MyClass::buttonPressed()
{
// handle the button pressed event....
}
所以你实际上没有任何调用等待按钮被按下作为框架,它的架构是这样设计的,你不应该把所有东西放在while(true)循环中。