2015-06-01 48 views
1

我正在製作一個表格。我必須提供輸入,並且輸入的任何內容都會在輸入框中顯示。我已經到了可以輸入信息的地步,但我無法在框中顯示。如何顯示實時輸出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; 

回答

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(); 
} 
+0

無法呈現它。我有層的形式,如果我打電話清除等功能,有閃爍。我想單擊一個框,然後寫入輸入並實時顯示它。它有什麼選擇? –