c++ - 如何显示实时输出 SFML

标签 c++ sfml

我正在一个盒子里制作一个表格。我必须提供输入,我输入的任何内容都会在我输入时显示在框中。我已经到了获得输入但无法在框中显示的地步。

这是片段:

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;

最佳答案

无论是否有 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();
}

关于c++ - 如何显示实时输出 SFML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30564726/

相关文章:

c++ - 应用程序可以吸收鼠标点击(即使它没有聚焦)吗?

rust - 从Rust的扫描码中检索与键盘布局无关的键入字符

c++ - 为什么模板类允许无法编译的成员函数?

c++ - 如何将用户输入与二维数组中的值进行比较?

c++ - 如何在directshow中叠加direct3d

c++ - 在 C++ 中正确使用 assert()

c++ - 1857 是 A 的另一个字符代码吗?

C++ SFML UDP Socket 向多个客户端接收和发送数据

c++ - 读出一个字符串流并将其插入不同的 vector 中

c++ - SFML - 将 RenderTexture 保存到图像 0xC0000005 时访问冲突读取位置