我正在为我的孙子写一个数学练习课程。我首先把它写成一个控制台应用程序,如下所示,一切正常。
for(int i = 0; i <= 9; i++)
{
n2Digit = GetNewDigit(iProblemsWorkedArray);
int validAnswer = add(n1Digit, n2Digit);
bool noKey = true;
while(noKey)
{
char KeyPressed = getch();
int KeyAscii = KeyPressed;
if((KeyAscii >= 48) && (KeyAscii <= 57) && (validAnswer < 10))
{
studentAnswer = KeyAscii - 48;
noKey = false;
}
yada yada...
}
}
现在我想用Qt GUI编写相同的东西,但发现
char KeyPressed = getch();
while循环中的不再适用于GUI模式。
我已经搜索了几天,得出的结论是我必须对错误的搜索进行措辞。有人请帮忙吗?
答案 0 :(得分:0)
我的猜测是,您正在创建一个带有字母或编号答案的问题列表,并且您希望用户(孙子)按一个键来回答它,而不是将答案输入编辑字段。
假设这是正确的,你可以做以下两件事之一:
对显示问题的小部件进行子类化,然后重新实现keyPressEvent方法。 Qt为获取键盘焦点的小部件调用此方法。它传递一个QKeyEvent对象,其中包含按下的键。然后,您可以检查密钥以查看它是否正确,并提供反馈。有关详细信息,请参阅QWidget::keyPressEvent
文档。
如果没有子类化,您可以创建一个事件过滤器并将其安装在标准小部件上。事件过滤器接收发送到目标窗口小部件的事件,您可以拦截QKeyEvent
个事件,检查它们是否有正确或错误的答案,并做出相应的响应。有关详细信息,请参阅QObject::installEventFilter
文档。