2

这是我在 SO 上的第一篇文章 ^_^

我正在尝试使用 QT 框架实现字母争夺游戏。主要部分已经完成,但现在我惊呆了——我不知道如何让程序等待在游戏中按下按钮。

请帮帮我。提前致谢

这是我的游戏周期的伪代码:

//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
}

PS 由于这是我在这里的第一篇文章,我将不胜感激有关如何更正确地撰写问题的任何建议。

4

1 回答 1

3

在我看来,您缺少的是 Qt 基于事件驱动编程。Qt 提供了您向用户显示的小部件/对象,例如按钮、窗口、控制器等。例如,QPushButton 对象能够接收各种事件,例如来自单击鼠标按钮或按下键盘键等的事件。

对于事件,Qt 提供了一个槽/信号机制来接收这些事件并对它们做出反应。因此,例如,在 QPushButton 的情况下,有一个称为“按下”的信号。当用户单击按钮时,会发出其按下信号。作为开发人员,您可以将按下的信号连接到插槽,这是您定义的函数。

例如,在从 QObject 派生的名为 MyClass 的类中: -

QPushButton button("Select"); // create a QPushButton object
connect(button, SIGNAL(pressed()), this, SLOT(buttonPressed()));

connect 语句将按钮的 'pressed' 信号连接到称为 'buttonPressed' 的插槽函数。然后,您将定义该函数:-

void MyClass::buttonPressed()
{
    // handle the button pressed event....
}

所以你实际上没有任何调用来等待按钮被按下作为框架,它的架构是这样设计的,你不需要把所有东西都放在一个 while(true) 循环中。

于 2013-07-25T13:27:38.477 回答