I am trying to avoid backspace from removing a character from
QTextEdit if my QTextEdit has only prompt.
I tried in few ways, but eventFilter is not working as expected.
some times my keys are not even getting dislpayed while typing..
Is there any function to to disable the backspcae when only prompt is available
in QTextEdit?



Qt Code:
  1. #define PROMPT "CmdLin>"
  2.  
  3. bool eventFilter(QObject *Obj, QEvent *event)
  4. {
  5. static int count;
  6. int promt_len = strlen(PROMPT);
  7.  
  8. if(event->type() == QEvent::KeyPress){
  9. QKeyEvent *kevent = static_cast<QKeyEvent*>(event);
  10. QString tmp_str= m_pcmdWin->toPlainText();
  11.  
  12. qDebug()<<"len"<<m_pcmdWin->toPlainText().length();
  13. //if( promt_len== 7 && kevent->key()==Qt::Key_Backspace )
  14. //if( kevent->key()==Qt::Key_Backspace )
  15. if(tmp_str.cmp(PROMPT) && kevent->key()==Qt::Key_Backspace )
  16. {
  17. qDebug()<<"backspcae pressed";
  18. //return QObject::eventFilter(Obj,event);
  19. return 0;
  20. }
  21.  
  22. else if (kevent->key()==Qt::Key_Return||kevent->key()==Qt::Key_Enter ) {
  23. str = m_pcmdWin->toPlainText();
  24. QStringList line = str.split(QRegExp("\n"));
  25. QString str2=line[count];
  26. count++;
  27. QByteArray bbyteArray = str2.toUtf8();
  28. const char *st=str2.toUtf8().constData();
  29. read(st);
  30. }
  31. else{
  32. kevent->accept();
  33. str = m_pcmdWin->toPlainText();
  34. }
  35. }else {
  36. return QObject::eventFilter(Obj,event);
  37. }
  38. }
To copy to clipboard, switch view to plain text mode