我正在制作一个盒子里的表格。我必须提供输入,无论我输入什么,都会在我打字时显示在框中。我已经到了输入的地步但我无法在盒子上显示。
以下是片段:
case Event::TextEntered:
if (isSelected)
{
char print;
int xcor = 149;
sf::Text t;
t.setFont(font);
do
{
print = event.text.unicode;
//149.25
t.setCharacterSize(15);
t.setColor(Color::Black);
t.setString(print);
t.setPosition(xcor+1, 25);
window.draw(t);
//window.display();
} while (event.text.unicode!=13);
//cout << (char) event.text.unicode;
}
break;
答案 0 :(得分:3)
您应该每帧都绘制文本,无论是否有TextEntered
事件。你还需要一个字符串来存储文本。所以你的主循环看起来像这样:
sf::String text_string;
sf::Text text;
text.setCharacterSize(15);
text.setColor(Color::Black);
text.setPosition(150, 25);
while (window.isOpen())
{
// Process events
sf::Event event;
while (window.pollEvent(event))
{
switch (event.type)
{
case Event::TextEntered:
if (isSelected)
{
text_string += sf::String(event.text.unicode);
text.setString(text_string);
}
break;
// other events ...
}
}
window.clear();
window.draw(text)
window.display();
}