2016-10-18 15 views
1

我想創建一個文本框用戶輸入數據,它會很好,但是,每當我嘗試設置退格鍵刪除字符串的最後一個字符的鍵,即使無數教程以這種方式顯示我,它似乎也不起作用。當使用textEntered我不能得到退格鍵刪除字符串的最後一個字符

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個字符的最好方法。

+0

句子是一個字符串?什麼是getSize()?,我用一個字符串測試了一個代碼,它工作正常 – Treycos

+0

是的,句子是一個sf :: String和getSize()似乎工作正常。我想我缺少一些愚蠢的東西無法找到它tho:/ – adambarkertreso

+0

哦,我用了一個std ::字符串,沒關係,我再試一次 – Treycos

回答

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

如果你按Backspace鍵,你的計劃是將它添加到字符串然後刪除它...所以...它沒有做任何事情^^

+1

我想知道當你像一個瘋子一樣回退時會發生什麼...... ;-) – Hiura

+0

是的,不要忘了檢查你的字符串是否至少包含一個字符時刪除。編輯 – Treycos

+0

您的編輯沒有解決它。現在,如果字符串是空的,你會添加8。 – Hiura

相關問題