使用textEntered时,我无法获得退格键来删除字符串的最后一个字符

时间:2016-10-18 00:52:58

标签: c++ sfml

我正在尝试创建一个用户输入数据的文本框,但是,每当我尝试设置 backspace 键来删除字符串的最后一个字符时,它都没问题,即使无数的教程以这种方式向我展示,它似乎也无法工作。

if (event.type == sf::Event::TextEntered)
{
    sentence += (char)event.text.unicode;
    //if (sentence.getSize() < 16) {

    // 

    if (event.text.unicode == 8)
    {

        sentence.erase(sentence.getSize() - 1, sentence.getSize());

    }
    text.setString(sentence);

    break;
    //}
}

另外,想知道阻止字符串推进16个字符的最佳方法是什么。

1 个答案:

答案 0 :(得分:0)

没关系,不是那么难,你会在我说的话之后感到很奇怪^^

if (event.type == sf::Event::TextEntered) {
    if (event.text.unicode == 8)
        if (sentence.getSize())//If the string doesn't have any char, don't do anything
            sentence.erase(sentence.getSize() - 1, sentence.getSize());
    else //Don't add any character when you delete one
        if(sentence.getSize() < 16)//Yeah, thats the best way to do it
            sentence += (char)event.text.unicode;

    text.setString(sentence);
    break;
}

如果您按退格键,您的程序会将其添加到字符串然后将其删除...所以......它没有做任何事情^^